concat里面的rails查询条件

时间:2014-01-31 01:08:31

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-4

我是铁杆新手。 我想以rails方式编写这个SQL查询:

select * from USER where ((name+' '+firstname) like %search%) or ((firstname+' '+name) like %search%) or (name like %search%)  or (firstname like %search%)

我该怎么做?

3 个答案:

答案 0 :(得分:1)

你可以用rails方式编写这个sql查询: 在User_controller中:

User.where("name = ? AND LOWER(firstname) LIKE LOWER(?)", "%#{ params[:name]}%", "%#{ params[:key]}%").

答案 1 :(得分:0)

User.find(:name =>"在这里您可以输入您的用户名")

这里你可以在方法中发送参数 def capitalize_name(名称)  name.downcase 端

那么你可以使用喜欢 User.find(:name =>"#{capitalize_name(name)}")

答案 2 :(得分:0)

已经有一段时间但发布了这个答案,因为它可能会节省一些人的时间。在postgres中,如果要连接两列,请使用||

User.where("(name || ' ' || firstname) LIKE ?", "#{search_term}")

注意:将查询字符串换成双引号,因为连接的空字符串(|| '' ||)需要在单引号。