Многократный поиск и поиск в sql - PullRequest
0 голосов
/ 11 января 2019

Я новичок в SQL и застрял в множественном поиске в SQL.

Здесь я пытаюсь найти таблицу1 в трех столбцах. Но я застрял в попытке найти две фразы. Я пытаюсь с оператором ИЛИ

Если я удаляю ИЛИ КАК "% paris%", это работает, но как мне найти несколько слов / фраз. И будет ли это утверждение чувствительным к регистру?

Я также использую MySQL для запуска вышеуказанного.

SELECT * FROM `table1`
WHERE
CONCAT_WS('|',`target_1`,`target_2`,`target_3`) 
LIKE '%london%' OR LIKE '%paris%'

Ответы [ 3 ]

0 голосов
/ 11 января 2019

Вы должны повторить левый операнд и использовать (возможно?) Несколько условий ввода / вывода:

SELECT * FROM `table1`
WHERE (`target_1` like '%london%' OR `target_1` like '%paris%')
  AND (`target_2` like '%london%' OR `target_2` like '%paris%')
  AND (`target_3` like '%london%' OR `target_3` like '%paris%')
0 голосов
/ 11 января 2019

Одним из вариантов является использование регулярного выражения, тогда вы также можете иметь регистрозависимое соответствие (3-й параметр для REGEXP_LIKE)

SELECT * 
FROM table1
WHERE REGEXP_LIKE(CONCAT_WS('|',`target_1`,`target_2`,`target_3`), 'london|paris', 'i');
0 голосов
/ 11 января 2019

В вашем коде ваше второе условие синтаксически неверно, потому что отсутствует деталь для совпадения

, поэтому вы должны повторить условие как

SELECT * 
FROM `table1`
WHERE CONCAT_WS('|',`target_1`,`target_2`,`target_3`) LIKE '%london%' 
OR CONCAT_WS('|',`target_1`,`target_2`,`target_3`) LIKE '%paris%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...