#php #mysql #sql-like
Вопрос:
У меня есть SQL-запрос, который отлично работает с использованием подстановочных знаков:
select * from answer_table where pattern like '%$pattern%'
Когда я вхожу Hello
, я получаю все ответы из таблицы ответов, имеющей этот шаблон.
То, что я хочу сделать, — это наоборот. Пользовательский ввод представляет собой длинную строку, например Hello, are you there?
. Мой запрос должен проверить все поле шаблона таблицы ответов, если один или несколько шаблонов найдены во входной строке.
Примеры данных в таблице ответов:
ответ | шаблон |
---|---|
Привет! | привет |
Что говорит лиса? | звенеть |
Мне хочется спать | zz |
Для Hello, are you there?
запроса следует вернуть Hello there!
Заранее спасибо.
Комментарии:
1.
SELECT answer FROM Answer_Table WHERE LOCATE(Answer_Table.pattern, @entered_value)
Ответ №1:
Просто поменяйтесь местами, чтобы вы сопоставили ввод пользователя со столбцом, а не со столбцом с вводом пользователя:
SELECT * FROM Answer_Table WHERE 'Hello, are you there?' LIKE CONCAT('%', pattern, '%')
Комментарии:
1. Хммм.. Я никогда не думал, что это возможно.. Большое спасибо!
2. Не могли бы вы, пожалуйста, принять ответ, если бы он сработал?
3. Только сегодня попробовал. Да, это сработало идеально. Большое спасибо!