gpt4 book ai didi

ruby-on-rails - Rails MySQL ILIKE 查询

转载 作者:IT王子 更新时间:2023-10-29 00:38:51 28 4
gpt4 key购买 nike

我的语法已关闭。我想创建一个范围 by_name 来查找 name 属性包含传入字符串(不区分大小写)的所有 agencies

这是我所拥有的:

class Agency < ActiveRecord::Base
scope :by_name, ->(agency_name) { where('name ILIKE ?', "%#{agency_name}%") }
end

在 Rails 控制台中,我输入 agencies = Agency.by_name("foo")。这是生成的查询:

SELECT `agencies`.* FROM `agencies`  WHERE (name ILIKE '%foo%')

这是错误信息:

Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ILIKE '%foo%')

最佳答案

我觉得应该是:

 scope :by_name, lambda { |agency_name| 
where('name LIKE ?', "%#{agency_name}%") # not ILIKE
}

It is in PostgreSQL可以使用关键字 ILIKE 代替 LIKE 来根据事件语言环境使匹配不区分大小写。这不在 SQL 标准中,而是 PostgreSQL 扩展。

在 MySQL 中你没有 ILIKE。结帐MySQL docs on string comparison functions .


奖励 - 您还可以使用 Arel .看一看:

scope :by_name, lambda { |agency_name| 
where(Agency.arel_table[:name].matches("%#{agency_name}%"))
}

关于ruby-on-rails - Rails MySQL ILIKE 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34029797/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com