|
|
|
| Перешёл на MySQL5. Стал замечать, что теперь уже нельзя вставить запись с пустым полем как в 4-ой версии например. Я так понял, что для полей которые могут быть пустыми нужно ставить NULL по умолчанию. Ну и собственно я вообще не понимаю принцип работы с этим NULL.
А именно. Есть например такая запись:
INSERT INTO `goods` ( `id` , `cat_id` , `sub_id` , `caption` , `description` , `image` , `price` )
VALUES (
'0', '1', NULL , 'Шкаф', 'Описание', NULL , '1500 руб.'
);
|
Получается что вроде как в поля sub_id и image я ничего не вношу, но данные там есть. И как теперь составить запрос, чтобы он выводил все записи с cat_id равным тому-то и с пустым sub_id ? Пробовал так:
SELECT * FROM goods WHERE cat_id = '1' AND sub_id = NULL
|
и 'NULL' (в кавычках), и просто пустоту ( ='' ), но всё-равно запрос ничего не выводит, хотя в таблице есть такая запись (см. в аттаче)
Объясните пожалуйста как работать с NULL, я думаю это не так долго, или дайте что-нибудь почитать. | |
|
|
|
|
|
|
|
для: NIK
(26.12.2006 в 19:02)
| | NULL - это не определённое значение, любая операция (в том числе и сравнения) с NULL имеет результатом NULL. Если требуется сравнить значение с NULL, то необходимо воспользоваться конструкцией IS NULL или IS NOT NULL
SELECT * FROM goods WHERE cat_id = '1' AND sub_id IS NULL
|
| |
|
|
|
|
|
|
|
для: cheops
(26.12.2006 в 19:17)
| | большое всем спасибо! | |
|
|
|
|
|
|
|
для: NIK
(26.12.2006 в 19:02)
| | Из мануала:
Проверить значение на равенство NULL с помощью обычных арифметических операторов сравнения (=, < или <>) нельзя.
Вместо этого нужно пользоваться операторами IS NULL и IS NOT NULL:
Потому, видимо, и не выводит ничего. | |
|
|
|