首页 > 解决方案 > 如何:sql 语句 select all from table,其中任何字母用户输入,匹配名称属性中包含的任何字母

问题描述

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

但是,我希望用户能够输入包含的任何字母,并且该函数返回包含该字母的任何名称,即 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

标签: sqlsinatra

解决方案


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

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

推荐阅读