如何查询非A-Z条目?

时间:2012-02-21 18:57:19

标签: sql ruby-on-rails ruby-on-rails-3 postgresql pattern-matching

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

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

这适用于a-z

我可以传递给@letter以获取所有不以a-z开头的行?例如,以“1”或“500”或其他非a-z字符开头的条目?

2 个答案:

答案 0 :(得分:3)

在PostgreSQL中需要regular expression match

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

\ w是[[:alnum:]_]的{​​{3}}。请注意,这仅包含数字和下划线_。 或者:

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

..匹配除a-zA-Z以外的所有字符。

您无法使用LIKE轻松完成此操作。

答案 1 :(得分:2)

我相信这会奏效:[^ a-z]

我在自己的临时表上测试过,它对我来说很好用:

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