Подтвердить что ты не робот

Использование OR в LIKE Query в MySQL для сравнения нескольких полей

Я всегда думал, что вы можете использовать OR в статусе LIKE для запроса вещей в MySQL. Итак, если бы я хотел сравнить несколько полей в строке с одним ключевым словом или термином:

SELECT * FROM MyTable WHERE Column1 OR Column2 LIKE '%keyword%'; 

и если бы у меня был массив слов для сравнения:

SELECT * FROM MyTable WHERE Column1 OR Column2 LIKE '%keyword1%' 
AND Column1 OR Column2 LIKE '%keyword2%';

Я не верю, что синтаксис правильный. Есть ли эффективный метод написания этого в стороне от чего-то вроде:

SELECT * FROM MyTable WHERE Column1 LIKE '%keyword1%' OR Column2 LIKE 
'%keyword1%' AND Column1 LIKE '%keyword2%' OR Column2 LIKE '%keyword2%';

Правильно ли я это делаю?

4b9b3361

Ответ 1

Используйте это::

SELECT * FROM MyTable WHERE (Column1 LIKE '%keyword1%' OR Column2 LIKE 
'%keyword1%') AND (Column1 LIKE '%keyword2%' OR Column2 LIKE '%keyword2%');

Ответ 2

Ближайшим к синтаксису, который вы хотите, является:

SELECT * FROM MyTable
WHERE (CONCAT(Column1, Column2) LIKE '%keyword1%')
AND (CONCAT(Column1, Column2) LIKE '%keyword2%')

Примечание: "%" в начале строки поиска исключает использование индексов. Если для поиска требуется большое количество записей, лучше всего пересмотреть реализацию.