SQL, собирая LIKE запросы - PullRequest
       3

SQL, собирая LIKE запросы

0 голосов
/ 26 сентября 2018
SELECT name
FROM TV
WHERE name LIKE '%Day%'
AND name NOT LIKE '%Days%'
            AND name NOT LIKE '%Hayday%'
            AND name NOT LIKE '%Payday%'
            AND name NOT LIKE '%Doomsday%'

Как можно объединить последние 3 запроса, чтобы слово «день» не входило ни в одно слово, кроме одного слова?

Ответы [ 5 ]

0 голосов
/ 26 сентября 2018

Предполагая, что «сам по себе» вы подразумеваете окруженный пробелами, тогда самый простой метод может быть:

SELECT name
FROM TV
WHERE ' ' || name || ' ' LIKE '% Day %';

(или, тем не менее, ваша база данных выполняет конкатенацию строк.)

Если "сам по себе "просто означает границу слова, тогда регулярные выражения являются лучшим методом.

0 голосов
/ 26 сентября 2018

Если вы используете MySQL, вы можете использовать RLIKE (REGEXP) , чтобы сопоставлять только само слово, создавая выражение с границами слова:

SELECT name
FROM TV
WHERE name REGEXP '[[:<:]]Day[[:>:]]'

Обратите внимание, что REGEXP не учитывает регистр, поэтому оно также будет соответствовать слову «день».

Если вы используете SQLite, возможно, у вас установлено REGEXP, и в этом случае это решение также должно работать для вас.Если нет, этот вопрос дает рекомендации относительно того, как вы можете установить его.

0 голосов
/ 26 сентября 2018

В вашем запросе вместо ключевого слова «Like» вы можете указать строку типа «where name ='time'

».
0 голосов
/ 26 сентября 2018

Вы можете с помощью FIND_IN_SET

SELECT name
FROM Track
WHERE name LIKE '%Time%'
AND FIND_IN_SET(name,"Times,Playtime,Summertime,Wartime")<0
0 голосов
/ 26 сентября 2018

Пробелы являются частью строки ... при условии, что вы ищете внутри фразы, или в начале или в конце.Это простое решение для случая, в котором нет знаков препинания, только тексты и пробелы.тогда решение должно быть что-то вроде:

SELECT name
FROM Track
WHERE name (name  LIKE '% Day %') OR (name  LIKE '% Day') OR (name  LIKE 'Day %')
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...