SQL-запрос для проверки префикса, пост-исправления или полного значения - PullRequest
0 голосов
/ 04 ноября 2018

Я ожидаю получить 1 запись, но в настоящее время я получаю 0 записей, используя запрос ниже. Как заставить это работать? По сути, я ищу в таблице ключевое слово, если префикс, постфикс, точное значение ключевого слова совпадает со значением таблицы, то записи должны возвращаться. В основном, я использую эту таблицу, чтобы запретить нереальное имя, если найдено совпадение с этим значением таблицы

case 1 : должен возвращать запись, потому что sex присутствует в префиксе ключевого слова поиска

select name from invalid_names_master where
name LIKE '%sexsadf' OR
name LIKE 'sexsadf%' OR
name='sexsadf'

case 2 : должен возвращать запись, потому что sex присутствует в постфиксе ключевого слова поиска

select name from invalid_names_master where
name LIKE '%ertsex' OR
name LIKE 'ertsex%' OR
name='ertsex'

В обоих вышеупомянутых 2 случаях

Ожидаемый результат :

`sex`  (i.e 1 record found) 

Таблица: invalid_name_master enter image description here

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Вы должны просто использовать like:

select name
from invalid_names_master
where 'sexsadf' like concat('%', name, '%');

Достаточно одного условия.

0 голосов
/ 04 ноября 2018

Я думаю, что вы намереваетесь сделать обратное, , т.е. , если входная строка sexsadf содержит какое-либо значение из invalid_name_master, вы помечаете его.

Попробуйте вместо этого следующий запрос:

select name 
from invalid_names_master 
where
  'sexsadf' LIKE CONCAT('%', name) OR 
  'sexsadf' LIKE CONCAT(name, '%') OR 
  'sexsadf' LIKE name 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...