MySQL 如何處理列舉中的空值和 null 值?


僅當 SQL 模式未設定為 TRADITIONAL,STRICT_TRANS_TABLES 或 STRICT_ALL_TABLES 時,MySQL 才接受列舉的空值。否則,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)

僅當我們沒有使用 NOT NULL 與 ENUM 列一起指定時,MySQL 才接受列舉的 NULL 值。我們知道每個列舉值都有一個索引值,NULL 的索引值是 NULL。

範例

mysql> Insert into result(id, name, grade) values(101, 'Rahul', NULL);
Query OK, 1 row affected (0.04 sec)

以上的查詢將插入 NULL 值,因為我們在 ENUM 列宣告中未指定 NOT NULL。

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

更新於: 20-Jun-2020

1K+ 瀏覽

開啟您的職業生涯

完成課程,獲得認證

開始
廣告
© . All rights reserved.