我們為什麼不應該將數字儲存到 MySQL ENUM 列?
MySQL 內部將 ENUM 值儲存為整數鍵(索引號)以引用 ENUM 成員。不將整數值儲存在 ENUM 列中的主要原因是,很明顯的是,MySQL 最終引用索引而不是值,反之亦然。
示例
以下示例可以闡明這一問題 −
mysql> Create table enmtest(Val ENUM('0','1','2'));
Query OK, 0 rows affected (0.18 sec)
mysql> Insert into enmtest values('1'),(1);
Query OK, 2 rows affected (0.19 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> Select * from enmtest;
+-----+
| Val |
+-----+
| 1 |
| 0 |
+-----+
2 rows in set (0.00 sec)此處,我們插入 '1' 作為字串,並意外地插入 1 作為數字(不帶引號)。MySQL 令人困惑地將我們的數字輸入用作索引值,即成員列表中第一項的內部引用(即 0)。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP