Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL จัดการค่าว่างและ NULL สำหรับ ENUM อย่างไร

MySQL ยอมรับค่าว่างสำหรับการแจงนับ (ENUM) ก็ต่อเมื่อโหมด SQL ไม่ได้ตั้งค่าเป็น TRADITIONAL, STRICT_TRANS_TABLES หรือ STRICT_ALL_TABLES มิฉะนั้น MySQL จะไม่ยอมรับค่าว่างและโยนข้อผิดพลาด เนื่องจากแต่ละค่า ENUM มีค่าดัชนี ค่าว่างจะมีค่าดัชนีเป็น 0

ตัวอย่าง

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

หลังจากเปลี่ยนโหมด SQL จะสามารถแทรกสตริงว่างได้:

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 ยอมรับค่า NULL สำหรับการแจงนับ ก็ต่อเมื่อเราไม่ระบุ NOT NULL กับคอลัมน์ ENUM เนื่องจากแต่ละค่ามีดัชนี ค่าดัชนีของ NULL คือ NULL

ตัวอย่าง

mysql> INSERT INTO result(id, name, grade) VALUES (101, 'Rahul', NULL);
Query OK, 1 row affected (0.04 sec)
mysql> SELECT * FROM result;
+-----+-------+-------+
| Id  | Name  | Grade |
+-----+-------+-------+
| 100 | Raman |       |
| 101 | Rahul | NULL  |
+-----+-------+-------+
2 rows in set (0.00 sec)