gpt4 book ai didi

mysql - 在字符串中使用带反斜杠的 mysql 执行 Rails 查询

转载 作者:行者123 更新时间:2023-11-29 06:36:47 24 4
gpt4 key购买 nike

我有一个如下所示的数据库条目:

name = 服务器名\vs1

我们有一个正在寻找这个词的搜索。

  scope :search, ->(term) {
if term
where('name LIKE ?', "%#{term}%")
else
all
end
}

但是,它没有找到它。当有人搜索 severname 时,它当然会出现。但是当它们包含反斜杠时,它就找不到了。

经过一些研究,我发现 Rails 目前在搜索之前向查询词添加一个反斜杠 (servername\\vs1),但 mysql 需要以下格式:(servername\\\\vs1).

所以,我希望有一种简单的 Rails 方法来添加额外的反斜杠。寻找任何好的解决方案。

谢谢

最佳答案

最简单的使用 Arel,像这样:

  scope :search, ->(term){
t = arel_table
term ? where( t[:name].matches("%#{term}%") )
: all
}

例子:

Simple.search('\a').to_sql
"SELECT \"simples\".* FROM \"posts\" WHERE (\"simples\".\"title\" LIKE '%\\a%')"

关于mysql - 在字符串中使用带反斜杠的 mysql 执行 Rails 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24086123/

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