Как проверить, содержит ли столбец подстроку строки в SQL?

#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 оператор, делающий свое дело.