我需要提取结果的子集,其中first_name列的值以标准英文字母(即 AZ)以外的任何字符开头,例如È. 我用这个把头撞在砖墙上 - 例如,这就是我能够获得所有以字母开头的记录的方式A:
@results = User.where("first_name LIKE ?", "A%").order("first_name ASC")
任何帮助都会很棒。
编辑:我正在使用 PostgreSQL 数据库。
我需要提取结果的子集,其中first_name列的值以标准英文字母(即 AZ)以外的任何字符开头,例如È. 我用这个把头撞在砖墙上 - 例如,这就是我能够获得所有以字母开头的记录的方式A:
@results = User.where("first_name LIKE ?", "A%").order("first_name ASC")
任何帮助都会很棒。
编辑:我正在使用 PostgreSQL 数据库。
您可以使用~运算符来匹配正则表达式。~用于匹配case sensitive数据。因此,在您的情况下,first_name ~ '^[^A-Z]'将给出who不以. 要匹配,您需要使用.usersfirst_nameA-Zcase insensitive~*
@results = User.where("first_name ~ ?", "^[^A-Z]").order("first_name ASC")
或者
您还可以使用!~which 给出不匹配的结果(即)first_name !~ ^[A-Z]等同于first_name ~ ^[^A-Z]. 为了匹配case insensitive使用!~*。
@results = User.where("first_name !~ ?", "^[A-Z]").order("first_name ASC")
有关更多信息,请参阅文档