#mysql #sql
Вопрос:
Я хочу проверить, содержит ли столбец в моей базе данных слова, похожие на мою примерную строку. Противоположность
select * from myTable where name like '%words%';
так что, если у меня будет запись, name=word
я смогу ее восстановить. С приведенным выше примером я могу получить результат только там, где words
есть подстрока столбца имени в таблице, поэтому я не могу получить word
Ответ №1:
Вы просто переворачиваете два термина в своем LIKE
операторе:
SELECT * FROM mytable WHERE 'words' LIKE CONCAT('%',name,'%')
Я верю в это LOCATE()
и INSTR()
тоже могу работать здесь, что выглядит приятнее, так как нет необходимости объединять поисковый запрос/подстроку.
SELECT * FROM mytable WHERE INSTR('words', name) gt; 0
Комментарии:
1. Большое спасибо. Как это
CONCAT('%',name,'%')
работает? Есть ли ссылка, по которой вы могли бы меня переслать?2. Это просто перебрасывание диких карт вокруг каждого
name
и поиск этого. Это в точности то же самое, что и в вашем примере, но вместо того, чтобы говоритьWhere this "name" column is like this string
, мы говоримWhere this string is like this name column
. Не уверен, есть ли документация, так как это простоLIKE
оператор, делающий свое дело.