【问题标题】:Search using 2 fields concatenated in one ruby使用连接在一个 ruby​​ 中的 2 个字段进行搜索
【发布时间】:2015-01-16 14:18:57
【问题描述】:

如果你能帮我解决这个问题,我正在徘徊。我需要使用我的数据库中的 2 个字段进行搜索,即 Cod + 编号。例如,我在一栏中展示了这一点。 cod ACE + number 003,它显示 ACE003,所以我如何在一个文本字段中搜索两个选项。现在,如果您在该字段中输入 ACE003,则不会返回任何内容,但如果您输入 ACE,它当然可以工作。这是我的代码..

index.html

<%= text_field_tag :s_cod, params[:s_cod] %>  

<% @items.each do |item| %>
  <tr>
    <td><%= item.cod + '%03d' % item.num.to_s %></td>
    ...  

控制器

if (params[:s_cod] != nil) or (params[:s_rotulo] != nil) or (params[:s_den_cont] != nil) or (params[:s_marca] != nil)
  @items = View_item.all.order("date_expired ASC").page(params[:page]).per(15).search(params[:s_cod], params[:s_rotulo], params[:s_den_cont], params[:s_marca])  

您可以看到我用来搜索的许多字段。我必须使用一个字段来搜索 cod + number。

型号

搜索部分

def self.search(s_codigo, s_rotulo, s_den_cont, s_marca)
where("cod ilike :s_c and rotulo ilike :s_r and den_cont ilike :s_d and marca ilike :s_m", s_c: "%#{s_cod}%", s_r: "%#{s_rotulo}%", s_d: "%#{s_den_cont}%", s_m: "%#{s_marca}%")
end  

如何使用一个文本字段按 cod + number 进行搜索?提前致谢!

更新(已解决)
在我使用的 postgress 数据库中,我认为

.concat(items.cod, to_char(items.num, 'fm000'::text)) AS codigo

【问题讨论】:

  • 你使用什么数据库? MySQL? PostgreSQL?还有什么?
  • Postgress,tks 先生...查看更新
  • 请不要在问题中回答你的问题。您可以为自己的问题添加一个答案,然后您可以选择正确的答案。

标签: ruby-on-rails ruby search textfield


【解决方案1】:

如果我正确理解您的问题,您需要查询两列的连接值。

在 MySQL 中,使用 CONCAT() 函数,如

where("concat(code,number) LIKE :s_c",s_c: "%#{s_cod}%")

我相信 PostgreSQL 应该是类似的,但我不是 100% 熟悉语法

【讨论】:

  • 感谢 Brian,我正在使用 postgress,请参阅解决方案的更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-06
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多