SQL 和 SQLite:如何搜索以数字开头的字段

发布于 2024-11-01 23:48:31 字数 83 浏览 1 评论 0原文

我有一个 SQL 模型,我想在其中搜索以数字开头的所有单词。 我无法使用正则表达式,因为 SQLite 不支持正则表达式,我如何欺骗它以获得相同的结果?

I have a SQL model in which I want to search all words starting with a number.
I can't use regexp since is not supported in SQLite, how can i trick it to have the same results?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

走走停停 2024-11-08 23:48:31

你可以做这个黑客:

@results = YourModel.where("(your_field + 0) > 0")

它将返回 YourModel 中的所有对象,其中 your_field 以大于零(而不是零)的数字开始

或者更原生解决方案:

@results = YourModel.where("substr(your_field,1,1) IN (?)", (0..9).to_a)

这意味着your_field的第一个字符应该是以下数字之一:0, 1, 2, 3, 4, 5, 6, 7, 8, 9

you can do this hack:

@results = YourModel.where("(your_field + 0) > 0")

It will return all objects from YourModel with your_field started with number that is more than zero (and not a zero)

Or little more native solution:

@results = YourModel.where("substr(your_field,1,1) IN (?)", (0..9).to_a)

It means that first character of your_field should be one of this numbers: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

甜心 2024-11-08 23:48:31

您可以在 sqlite 中使用 glob

Model.filter("field glob ?", '[0-9]*')

You can use glob in sqlite.

Model.filter("field glob ?", '[0-9]*')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文