Как: SQL заявление выбрать все из таблицы, где любая буква ввода пользователя совпадает с любой буквой, включенной в свойство имени - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть окно поиска в веб-приложении, и я хочу, чтобы пользовательский ввод в поле соответствовал соответствующей записи.В настоящее время я могу получить поиск для поиска по полному имени, т. Е. Пользователь должен точно ввести полное имя, чтобы получить совпадение.

Однако я хочу, чтобы пользователь могвведите любую включенную букву, и функция вернет любое имя, содержащее эту букву, например, 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 ]

2 голосов
/ 16 апреля 2019

Вам необходимо использовать подстановочный знак.% - это подстановочный знак, который заменяет его самостоятельно любой строкой.Ваш код должен выглядеть примерно так:

(first_name LIKE '%#{input.capitalize}%')
0 голосов
/ 16 апреля 2019

Посмотрите на специальный символ '%':

Может быть, это работает для вас.

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

ps: не уверен, что именно так вы объединяете строки в ruby.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...