Mysql возвращает строки с нулевыми (0) данными столбца в предложении WHERE

У меня есть простой запрос для моей таблицы:

SELECT * from delivery_receipts WHERE siid='';

Уникальный ключ этой таблицы - drid (не имеет значения для этого вопроса). Целевой столбец (siid) является int(11) поле, не индекс и не уникальный...

В любом случае, моя проблема в том, что, когда я запускаю это, mysql возвращает ВСЕ строки, которые имеют:

SELECT drid,siid from delivery_receipts WHERE siid='0'

Но, конечно, если я буду искать с siid указано, только строки с siid матч подходит....

Так что, похоже, моя таблица возвращает совпадение по всем строкам, которые имеют "0" при поиске ''

1 ответ

Решение

Оператор выбора интерпретируется сервером, и поэтому признается необходимость преобразования данных из char в int. И пустой символ, который вы предоставите, будет преобразован в 0 из-за значения по умолчанию для int.

Поэтому, если вы хотите получить все строки без значения (NULL), вы должны сделать

SELECT * from delivery_receipts WHERE siid IS NULL;

РЕДАКТИРОВАТЬ

SELECT * from delivery_receipts WHERE ( siid = '$siid' and '$siid' <> '' ) OR ( '$siid' = '' AND siid IS NULL );
Другие вопросы по тегам