在类的实例的属性中搜索字符串中的字符串

时间:2014-12-16 01:09:12

标签: sql ruby-on-rails ruby regex

我无法在我的rails应用程序中获取此数据库查询。这是我的控制器代码:

User.where(:sport => "/\bFootball").all

创建此查询/响应:

SELECT "users".* FROM "users"  WHERE "users"."sport" = 'Football'
=> []

==========================================

但是这个:

User.where(:sport => "Football").all

返回:

SELECT "users".* FROM "users"  WHERE "users"."sport" = 'Football'
=>[ARRAY OF DESIRED USERS]

不确定这里的语法

2 个答案:

答案 0 :(得分:1)

要在Rails中执行LIKE查询,您可以执行以下操作:

User.where("users.sport LIKE ?", "%Football%").all

答案 1 :(得分:0)

您还可以使用正则表达式进行此查询。相同的语法是:

User.where(sport: /Football/).to_a

如果您希望术语“足球”不区分大小写,您可以使用:

User.where(sport: /football/i).to_a

使用上述语法的原因:

User.where("users.sport LIKE ?", "%Football%").all

就像查询一样只适用于SQL数据库,而上面建议的基于正则表达式的查询适用于所有SQL以及像mongodb这样的NoSQL数据库。