如何在活动记录查询中使用正则表达式?

时间:2019-03-14 09:31:39

标签: ruby-on-rails regex ruby postgresql activerecord

我数据库的特定列中有以数字结尾的值,而其他则没有。 我正在尝试仅获取不包含这些数字的数据。

我尝试使用这些查询,但是它们不起作用:

User.where.not("spec like ?", "%\d")
User.where.not("spec ~ ?", "%\d")

如何找到这些数据?

1 个答案:

答案 0 :(得分:4)

SIMILAR TO%[0-9]模式一起使用:

User.where.not("spec SIMILAR TO ?", "%[0-9]")

SIMILAR TO运算符与regex类似,但允许与LIKE和某些“轻型” regex构造(例如)一起使用通配符。方括号表达式,例如[0-9][A-Z]。该模式应与LIKE一样匹配整个输入。

因此,%[0-9]模式将匹配任何以任何文本开头的字符串(%通配符完成)并以ASCII数字结尾(由于末尾的[0-9]