четверг, 14 мая 2015 г.

Mysql и работа с NULL

Сегодня столкнулся с такой тонкостью, допустим в одном из полей есть значения числовые, 0 и NULL (при постепенной доработке движка и базы так получилось)



 мы делаем запрос

SELECT * FROM `products` WHERE NOT `picture_id`>0

У нас выберет записи, у которых в picture_id 0, но не выберет те, у которых NULL


А теперь чуток поменяем запрос и получаем вот что:

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

Для решения данной проблемы нужно писать
SELECT * FROM `products` WHERE `picture_id`=0 OR `picture_id` IS NULL

Либо значение по умолчанию поставить 0, а потом выполнить запрос
UPDATE `products` SET `picture_id`=0 WHERE `picture_id` IS NULL

1 комментарий:

dog-64 комментирует...

SELECT * FROM `products` WHERE ifnull(`picture_id`,0) = 0

Отправить комментарий