ruby-on-rails - 查找 first_name 列不以 A-Z 开头的所有记录

标签 ruby-on-rails ruby-on-rails-3 postgresql rails-activerecord

我需要提取结果子集,其中 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/

相关文章:

sql - 在 PostgreSQL 中查看错误

sql - 当所有其他列都相等时,对具有不同标签的值的约束

sql - 复杂的 'Gaps and Islands' 问题

mysql - Rails - 查询 has_many 关联

ruby-on-rails - 使用ctrl-n自动补全单词时,Vim随机出现段错误

ruby-on-rails-3 - 在 Ruby on Rails 中,为什么 "bundle install"创建 Gemfile.lock 这么慢而 "rails g foo name:string"创建它这么快?

ruby-on-rails - 将 JSON 导入 Rails

ruby-on-rails - 使用 Knock 的 Rails API 的 Auth0

ruby-on-rails - 在助手中调用yield

ruby-on-rails-3 - RAILS 3- Controller 中的交易