gpt4 book ai didi

mysql - 在 Rails 范围内使用 Concat

转载 作者:数据小太阳 更新时间:2023-10-29 08:36:43 25 4
gpt4 key购买 nike

我有一个 Contact 模型。它具有属性:first_namelast_name。用户在搜索字段中输入文本并提示:输入联系人的全名。然后 Rails 需要找到所有联系人记录 LIKE 输入的姓名。这是联系人记录的图片:

Picture of records within the Contact Table

-如果用户输入“JOE”,rails 将返回两条记录(因为它不区分大小写)

-如果用户输入“joe s”,rails 将返回两条记录

-如果用户输入“doe”,rails 将返回一条记录。

#models/contact.rb
class Contact < ActiveRecord::Base
scope :by_entered_name, -> (full_name){where("CONCAT('first_name',' ','last_name') LIKE ?", full_name)}
end

当我在 Rails 控制台中运行 Contact.by_entered_name("joe") 时生成的 sql:

SELECT "contacts".* FROM "contacts" WHERE (CONCAT('first_name',' ','last_name') LIKE 'joe'

我正在使用 mysql 以防细节很重要。然而,对于这个示例应用程序,我使用的是 sqlite,它会抛出一个语法错误。最终最重要的是我让它在 mysql 上运行。

更新:有人表示我的问题不清楚。我的问题是:

我如何正确地创建一个查询,它接受用户输入的文本,并找到所有 contacts,其连接的 first_namelast_nameLIKE 用户提交的文本?我还需要它不区分大小写。我上面尝试的范围似乎不起作用。

最佳答案

有些引语你不需要。并且您需要在参数中使用通配符 %。此外,需要 ILIKE 来忽略 Postgres 的情况。

class Contact < ActiveRecord::Base
scope :by_entered_name, -> (full_name){where("CONCAT(first_name,' ',last_name) ILIKE ?", "%#{full_name}%")}
end

关于mysql - 在 Rails 范围内使用 Concat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33794951/

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