MYSQL - запрос SELECT с LIKE с использованием %% возвращает неверное значение - PullRequest
1 голос
/ 02 октября 2009

Запрос:

SELECT * FROM table
  WHERE fieldA LIKE '%%' 
  AND fieldB LIKE '%%' 
  AND fieldC LIKE '%%' 

Возвращает только записи, в которых все поля заполнены. Я думал, что он должен вернуть все записи в таблице.

Действительно ли '%%' означает, что значение необходимо?

Update1:

Благодаря некоторым хорошим вопросам было найдено решение:

Запрос должен быть таким:

SELECT * FROM table
  WHERE if(fieldA IS NOT NULL,fieldA LIKE '%%',fieldA IS NULL)
  ...

1 Ответ

10 голосов
/ 02 октября 2009

LIKE '%%' совпадает с любой строкой, даже с нулевой длиной. Результат вашего запроса - он возвращает все строки, в каждом из трех полей которых есть строка.

Я предполагаю, что поля, которые не заполнены, имеют значение NULL. Может быть, вы должны проверить IS NOT NULL вместо LIKE '%%'?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...