我需要提取结果的子集,其中first_name
列的值以标准英文字母(即a-Z)以外的任何字符开头,例如È
。我的头撞在砖墙上,举个例子,这就是我如何得到所有以字母开头的记录:
@results = User.where("first_name LIKE ?", "A%").order("first_name ASC")
任何帮助都很好。
编辑:我正在使用PostgreSQL数据库。
最佳答案
您可以使用~
运算符来匹配正则表达式。~
用于匹配case sensitive
数据。所以在你的例子中,first_name ~ '^[^A-Z]'
将给出users
的first_name
它的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
关于ruby-on-rails - 查找first_name列不以A-Z开头的所有记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15030558/