我需要提取first_name
列的值以非标准英文字母(即A-Z)开头的结果子集,例如È
。我敲我的头撞墙本 - 例如,这是怎么了,我已经能够得到以字母A
的所有记录:查找first_name列未以A-Z开头的所有记录
@results = User.where("first_name LIKE ?", "A%").order("first_name ASC")
任何帮助将是美好的。
编辑:我正在使用PostgreSQL数据库。
我需要提取first_name
列的值以非标准英文字母(即A-Z)开头的结果子集,例如È
。我敲我的头撞墙本 - 例如,这是怎么了,我已经能够得到以字母A
的所有记录:查找first_name列未以A-Z开头的所有记录
@results = User.where("first_name LIKE ?", "A%").order("first_name ASC")
任何帮助将是美好的。
编辑:我正在使用PostgreSQL数据库。
您可以使用~
运算符来匹配正则表达式。 ~
用于匹配case sensitive
数据。所以在你的情况下,first_name ~ '^[^A-Z]'
将给users
其0123¾不以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
谢谢你,这工作完美,我一直对流感感到抱歉,它花了我很长时间才得到这个答复,它真的帮了我。 – 2013-03-01 11:04:13
你能提供你的数据库系统名吗? MySQL的? PostgreSQL的? – MrYoshiji 2013-02-22 18:12:39
对不起PostGreSQL – 2013-02-22 18:13:07