如何查询非AZ条目?

发布于 2025-01-07 09:25:00 字数 262 浏览 0 评论 0原文

我有一个带有字段 title 的表。我目前按字母查询如下:

Group.where("title like ?", "#{@letter}%")

这对于 az 非常有用。

我可以向 @letter 传递什么来获取所有不以 az 开头的行?例如,以“1”、“500”或其他非 az 字符开头的条目?

I have a table with a field title. I currently query by letter as follows:

Group.where("title like ?", "#{@letter}%")

This works great for a-z.

What can I pass to @letter to get all rows that do not start with a-z? Entries that start with '1', or '500' or some other non a-z character for example?

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

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

发布评论

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

评论(2

撧情箌佬 2025-01-14 09:25:00

您需要正则表达式匹配在 PostgreSQL 中:

SELECT *
FROM   tbl
WHERE  title ~ E'^\\w.*';

\w 是 [[:alnum:]_] 的类简写。请注意,这仅包括数字和下划线_
或者:

title ~ E'^[^a-zA-Z].*'

.. 匹配除第一个位置的 azAZ 之外的所有字符。

使用 LIKE 无法轻松做到这一点。

You need a regular expression match for that in PostgreSQL:

SELECT *
FROM   tbl
WHERE  title ~ E'^\\w.*';

\w being the class shorthand for [[:alnum:]_]. Note that this only includes digits and the underscore _.
Or:

title ~ E'^[^a-zA-Z].*'

.. to match all characters except a-z and A-Z at the first position.

You cannot do that easily with LIKE.

冷情妓 2025-01-14 09:25:00

我相信这会起作用:[^az]

我在自己的临时表上测试了它,它对我来说效果很好:

select * from #test where test like '[^a-z]%'

I believe that this will work: [^a-z]

I tested it on my own temp table and it worked fine for me:

select * from #test where test like '[^a-z]%'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文