我需要提取结果的子集,其中first_name
列的值以标准英文字母(即A-Z)以外的任何内容开头,例如È
。我正用这个敲打砖墙 - 例如,这就是我能够以字母A
开头的所有记录:
@results = User.where("first_name LIKE ?", "A%").order("first_name ASC")
任何帮助都会很棒。
编辑:我正在使用PostgreSQL数据库。
答案 0 :(得分:5)
您可以使用~
运算符来匹配正则表达式。 ~
用于匹配case sensitive
数据。因此,在您的情况下,first_name ~ '^[^A-Z]'
将users
first_name
的{{1}}不以A-Z
开头。要匹配case insensitive
,您需要使用~*
。
@results = User.where("first_name ~ ?", "^[^A-Z]").order("first_name ASC")
或
您还可以使用!~
来提供与first_name !~ ^[A-Z]
相当的不匹配结果(即)first_name ~ ^[^A-Z]
。要匹配case insensitive
,请使用!~*
。
@results = User.where("first_name !~ ?", "^[A-Z]").order("first_name ASC")
有关详细信息,请参阅documentation
答案 1 :(得分:0)