Как сделать поле со значением NULL?

Bboy

Новичок
Как сделать поле со значением NULL?

как сделать, что бы при добавлении в таблицу записей, если в форме добавления в поле ничего не ввели, то оно бы в БД имело значение NULL?
 

Bboy

Новичок
Саня, может подскажешь, почему у меня в таблицу, если поле для ввода пустое, добавляется не "NULL", а "0"??? Просто потом поиск с нулем не удобно делать.
 

pauk

Новичок
>вообще-то, как раз с нулем делать и удобно

Если в поле число:)
Если текст, то удобнее все-таки с NULL.
 

Фанат

oncle terrible
Команда форума
pauk, потрудись не писать того, о чем не знаешь.
с null как раз неудобнее.
если хоть чуть чуть подумать мозгом, которого у тебя, увы, нет, то это будет очевидно.
 

Bboy

Новичок
Originally posted by pauk
Bboy
посмотри в DEFAULT поля
в phpmyadmin в поле "по умолчанию" стоит "NULL", а если добавляю пустую запись, то ей присваивается значение "0"!
Может это из-за типа поля?
 

Саня

Guest
Конечно из-за этого. В числовой тип подставляется число. Если нужна строка, то тип должен быть строковым, например tinytext
 

Frol

Новичок
> .., а если добавляю пустую запись...
надо НЕ пустую строку добавлять а NULL
 

chira

Новичок
посмотри внимательно на пример:
Код:
mysql> create table tt(n1 int,t1 varchar(10));
Query OK, 0 rows affected (0.02 sec)

mysql> insert into tt values ('','asd'),(NULL,''),('0',1),('NULL',NULL);
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 2

mysql> select * from tt;
+------+------+
| n1   | t1   |
+------+------+
|    0 | asd  |
| NULL |      |
|    0 | 1    |
|    0 | NULL |
+------+------+
4 rows in set (0.00 sec)

mysql>
 

Bboy

Новичок
Originally posted by chira
посмотри внимательно на пример:
Код:
mysql> create table tt(n1 int,t1 varchar(10));
Query OK, 0 rows affected (0.02 sec)

mysql> insert into tt values ('','asd'),(NULL,''),('0',1),('NULL',NULL);
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 2

mysql> select * from tt;
+------+------+
| n1   | t1   |
+------+------+
|    0 | asd  |
| NULL |      |
|    0 | 1    |
|    0 | NULL |
+------+------+
4 rows in set (0.00 sec)

mysql>
если написать
select n1 from tt where n1=null
что выведется, первая, третья и четвертая записи???
 

Bboy

Новичок
попробовал...
получается что в mysql в запросах вида "IS [NOT] NULL" null воспринимается как char переменная! А я сначала думал, что с помощью вышеупомянутого условия можно находить поля такие, как в столбце t1, во второй строке - т.е. полностью без значений.
Плохо((
Плохо что в mysql не придумали ничего подобного, а так бы взял и написал:
select * from table_name where поля пустые (не 0 и не null, а именно пустые)
или я не прав?
 
Сверху