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

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


MySQL ยอมรับค่าว่างสำหรับการแจงนับก็ต่อเมื่อไม่ได้ตั้งค่าโหมด SQL เป็น TRADITIONAL, STRICT_TRANS_TABLES หรือ STRICT_ALL_TABLES มิฉะนั้น MySQL จะไม่ยอมรับค่าว่างและแสดงข้อผิดพลาด เนื่องจากเราทราบดีว่าค่าการแจงนับแต่ละค่ามีค่าดัชนี ค่าว่างจะมีค่าดัชนีเป็น 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)

ข้อความค้นหาด้านบนจะแทรกค่า NULL เนื่องจากเราไม่ได้ระบุ NOT NULL ในการประกาศคอลัมน์ ENUM

mysql> select * from result;
+-----+-------+-------+
| Id  | Name  | Grade |
+-----+-------+-------+
| 100 | Raman |       |
| 101 | Rahul | NULL  |
+-----+-------+-------+
2 rows in set (0.00 sec)