我需要提取结果的子集,其中first_name列的值以标准英文字母(即a-Z)以外的任何字符开头,例如È。我的头撞在砖墙上,举个例子,这就是我如何得到所有以字母开头的记录:

@results = User.where("first_name LIKE ?", "A%").order("first_name ASC")

任何帮助都很好。
编辑:我正在使用PostgreSQL数据库。

最佳答案

您可以使用~运算符来匹配正则表达式。~用于匹配case sensitive数据。所以在你的例子中,first_name ~ '^[^A-Z]'将给出usersfirst_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/

10-13 04:44