如何查询非AZ条目?
我有一个带有字段 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要正则表达式匹配在 PostgreSQL 中:
\w 是
[[:alnum:]_]
的类简写。请注意,这仅包括数字和下划线_
。或者:
.. 匹配除第一个位置的
az
和AZ
之外的所有字符。使用
LIKE
无法轻松做到这一点。You need a regular expression match for that in PostgreSQL:
\w being the class shorthand for
[[:alnum:]_]
. Note that this only includes digits and the underscore_
.Or:
.. to match all characters except
a-z
andA-Z
at the first position.You cannot do that easily with
LIKE
.我相信这会起作用:[^az]
我在自己的临时表上测试了它,它对我来说效果很好:
I believe that this will work: [^a-z]
I tested it on my own temp table and it worked fine for me: