【问题标题】:LIKE Query in rails 5 not workingRails 5中的LIKE查询不起作用
【发布时间】:2017-11-23 03:49:22
【问题描述】:

使用这个:

.. .where("field1 IN(?) AND field2 LIKE(?) AND field3 LIKE(?) ", params[:array_for_field1], "%#{params[:array_for_field2]}%", "%#{params[:array_for_field3]}%")

我明白了:

SELECT `table`.* FROM `table` WHERE(field1 IN('value1','value2','value3') AND field2 LIKE('%[\"value1\", \"value2\"]%') AND field3 LIKE('%[\"value1\"]%') )

我想知道错误在哪里,因为 field1 有效,但是使用 % 的“LIKE Query”部分不是,参数来自复选框表单。谢谢

【问题讨论】:

标签: mysql ruby-on-rails ruby


【解决方案1】:

我最终将此解决方案与 REGEX 一起使用,它可以按我的需要工作。

.where("field1 IN(?) AND field2 RLIKE(?) AND field3 RLIKE(?) ", params[:array_for_field1], params[:array_for_field2].join("|"), params[:array_for_field3].join("|"))

【讨论】:

    【解决方案2】:

    根据this response,如果您使用的是 Postgres,您可以尝试这样的事情:

    field2_ilike_params = params[:array_for_field2].map { |p| "%p%" }
    field3_ilike_params = params[:array_for_field3].map { |p| "%p%" }
    Model.where(field1: params[:array_for_field1]).where("field2 ILIKE ANY ( array[?] ) AND field3 ILIKE ANY ( array[?] )", field2_ilike_params, field3_ilike_params)
    

    【讨论】:

    • 感谢您能告诉我如何在 MySQL 上执行此操作。非常感谢
    猜你喜欢
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 2010-10-04
    • 2022-01-03
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多