作法:sql陈述式从表格中全选,使用者输入的任何字母都与name属性中包含的任何字母相匹配

时间:2019-04-16 17:48:32

标签: sql sinatra

我在Web应用程序上有一个搜索框,我希望该框中的用户输入与相关记录匹配。此刻,我可以通过全名进行搜索,即用户必须准确键入全名才能匹配。

但是,我希望用户能够键入包含的任何字母,并且该函数返回包含该字母的任何名称。 即Jimmy,搜索i并找到一个匹配项

这是我当前的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

2 个答案:

答案 0 :(得分:2)

您需要使用通配符。 %是通配符,它​​将自己替换为任何字符串。您的代码应如下所示:

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

答案 1 :(得分:0)

看看'%'特殊字符:

也许这对您有用。

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

ps:不确定这是否就是在ruby中并置字符串的方式。