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 );