如何:sql 声明 select 全部来自 table,其中用户输入的任何字母都匹配名称 属性 中包含的任何字母
how to: sql statement select all from table, where any letter user inputs, matches any letter included in a name property
我在网络应用程序上有一个搜索框,我希望用户在框中输入的内容与相关记录相匹配。目前,我可以通过全名进行搜索,即用户必须准确输入全名才能匹配。
但是,我希望用户能够输入包含的任何字母,函数 return 任何包含该字母的名称
即 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
您需要使用通配符。 % 是通配符,可将其自身替换为任何字符串。您的代码应如下所示:
(first_name LIKE '%#{input.capitalize}%')
查看“%”特殊字符:
也许这对你有用。
sql = "SELECT * FROM customers WHERE (first_name LIKE %' + #{input.capitalize} + '%) OR (last_name LIKE %' + #{input.capitalize} + '%) "
ps:不确定你在 ruby.
中是否就是这样连接字符串的
我在网络应用程序上有一个搜索框,我希望用户在框中输入的内容与相关记录相匹配。目前,我可以通过全名进行搜索,即用户必须准确输入全名才能匹配。
但是,我希望用户能够输入包含的任何字母,函数 return 任何包含该字母的名称 即 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
您需要使用通配符。 % 是通配符,可将其自身替换为任何字符串。您的代码应如下所示:
(first_name LIKE '%#{input.capitalize}%')
查看“%”特殊字符:
也许这对你有用。
sql = "SELECT * FROM customers WHERE (first_name LIKE %' + #{input.capitalize} + '%) OR (last_name LIKE %' + #{input.capitalize} + '%) "
ps:不确定你在 ruby.
中是否就是这样连接字符串的