MySQL chấp nhận giá trị rỗng cho liệt kê chỉ khi SQL mode không được đặt là TRADITIONAL, STRICT_TRANS_TABLES hoặc STRICT_ALL_TABLES. Nếu không, MySQL sẽ không chấp nhận giá trị rỗng và ném lỗi. Như chúng ta biết, mỗi giá trị liệt kê có giá trị chỉ mục, giá trị rỗng có chỉ mục 0.
Ví dụ
mysql> SET SQL_MODE = 'Traditional'; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO result(id, name, grade) VALUES (100, 'Raman', ''); ERROR 1265 (01000): Data truncated for column 'Grade' at row 1
Bây giờ, sau khi thay đổi SQL mode, chúng ta có thể chèn chuỗi rỗng như sau:
mysql> SET SQL_MODE = ''; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO result(id, name, grade) VALUES (100, 'Raman', ''); Query OK, 1 row affected, 1 warning (0.04 sec) mysql> SELECT * FROM result; +-----+-------+-------+ | Id | Name | Grade | +-----+-------+-------+ | 100 | Raman | | +-----+-------+-------+ 1 row in set (0.00 sec)
MySQL chấp nhận giá trị NULL cho liệt kê chỉ khi chúng ta không chỉ định NOT NULL với cột ENUM. Như chúng ta biết, mỗi giá trị liệt kê có giá trị chỉ mục, giá trị chỉ mục của NULL là NULL.
Ví dụ
mysql> INSERT INTO result(id, name, grade) VALUES (101, 'Rahul', NULL); Query OK, 1 row affected (0.04 sec)
Truy vấn trên chèn giá trị NULL vì chúng ta không chỉ định NOT NULL trong khai báo cột ENUM.
mysql> SELECT * FROM result; +-----+-------+-------+ | Id | Name | Grade | +-----+-------+-------+ | 100 | Raman | | | 101 | Rahul | NULL | +-----+-------+-------+ 2 rows in set (0.00 sec)