我需要提取结果子集,其中 first_name
列的值以标准英文字母(即 A-Z)以外的任何字符开头,例如 È
。我用这个把头撞在砖墙上 - 例如,这就是我能够获得以字母 A
开头的所有记录的方式:
@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/