Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Принцип действия NULL в MySQL5
 
 автор: NIK   (26.12.2006 в 19:02)   письмо автору
 
 

Перешёл на 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, я думаю это не так долго, или дайте что-нибудь почитать.

   
 
 автор: cheops   (26.12.2006 в 19:17)   письмо автору
 
   для: 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

   
 
 автор: NIK   (26.12.2006 в 20:27)   письмо автору
 
   для: cheops   (26.12.2006 в 19:17)
 

большое всем спасибо!

   
 
 автор: Ivan   (26.12.2006 в 19:23)   письмо автору
 
   для: NIK   (26.12.2006 в 19:02)
 

Из мануала:
Проверить значение на равенство NULL с помощью обычных арифметических операторов сравнения (=, < или <>) нельзя.
Вместо этого нужно пользоваться операторами IS NULL и IS NOT NULL:

Потому, видимо, и не выводит ничего.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования