【问题标题】:Concat inside rails query conditionsConcat inside rails 查询条件
【发布时间】:2014-01-31 01:08:31
【问题描述】:

我是 Rails 新手。 我想用 rails 的方式写这个 SQL 查询:

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

我该怎么做?

【问题讨论】:

  • 搜索中会出现什么? kinsonTo 和 nyHop 似乎不太可能
  • 看起来根本不像一个可以扩展的查询
  • 搜索只是一个随机字符串

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


【解决方案1】:

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

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

【讨论】:

  • 如果我想在模型里面写?我如何使用“find(:all, :conditions =>”来做到这一点?
【解决方案2】:

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

这里你可以在方法中发送参数 def 大写名称(名称) 名称.小写 结束

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

【讨论】:

    【解决方案3】:

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

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

    注意: 将查询字符串用双引号括起来,因为连接的空字符串 (|| ' ' ||) 需要用单引号括起来。

    【讨论】:

      猜你喜欢
      • 2014-10-04
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      相关资源
      最近更新 更多