如何:sql语句select table from table,其中任何字母用户输入,匹配name属性中包含的任何字母

问题描述 投票:0回答:2

我在网络应用程序上有一个搜索框,我希望框中的用户输入与相关记录匹配。目前,我可以通过整个名称进行搜索,即用户必须准确输入全名,以获得匹配。

但是,我希望用户能够键入任何包含的字母,并且函数返回包含该字母的任何名称,即吉米,搜索我并获得匹配

这是我当前的ruby方法,包括sql语句,这是我需要修改的方式

def self.search(input)
  sql = "SELECT * FROM customers WHERE (first_name LIKE '#{input.capitalize}') OR (last_name LIKE '#{input.capitalize}')  "
  results = SqlRunner.run(sql)
  return results.map { |customer| Customer.new(customer) }
end
sql sinatra
2个回答
2
投票

您需要使用通配符。 %是用任何字符串替换self的通配符。你的代码应该是这样的:

(first_name LIKE '%#{input.capitalize}%')

0
投票

看看'%'特殊字符:

也许这适合你。

sql = "SELECT * FROM customers WHERE (first_name LIKE %' + #{input.capitalize} + '%) OR (last_name LIKE %' + #{input.capitalize} + '%)  "

ps:不确定你是否如何在ruby中连接字符串。

© www.soinside.com 2019 - 2024. All rights reserved.