在mysql中使用regexp和Rails中的where子句

时间:2016-03-22 11:15:52

标签: mysql regex ruby-on-rails-4 activerecord

我正在尝试使用regexp通过where子句查找一些结果。但结果正如预期的那样。任何帮助都将非常感激。

用户名为asha123

数据库查询

User.where('username  REGEXP ?', /(asha|asha)/) 

结果

User Load (0.4ms)  SELECT `users`.* FROM `users` WHERE (username  REGEXP '--- !ruby/regexp /(asha|asha)/\n...\n')

=> #<ActiveRecord::Relation []> 

1 个答案:

答案 0 :(得分:2)

传入字符串而不是ruby正则表达式。例如:

User.where('username  REGEXP ?', '(asha|asha)') 

虽然您的数据库需要“正则表达式”,但ActiveRecord不是 - 它只是想用字符串值替换?

更新:使用变量:只需在双引号内使用常规变量插值。假设您有first_namelast_name个变量:

User.where('username REGEXP?',“(#{first_name} |#{last_name})”)