程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> mysql中的枚舉類型ENUM的用法

mysql中的枚舉類型ENUM的用法

編輯:關於MYSQL數據庫

MySQL中的枚舉類型ENUM是一個字符串對象,它的值是自表創建時在列規定中顯式枚舉的一列值。
在某些情況下,ENUM值也可以為空字符串('')或NULL:
如果你將一個非法值插入ENUM(也就是說,允許的值列之外的字符串),將插入空字符串以作為特殊錯誤值。該字符串與“普通”空字符串不同,該字符串有數值值0。後面有詳細討論。
如果將ENUM列聲明為允許NULL,NULL值則為該列的一個有效值,並且 默認值為NULL。如果ENUM列被聲明為NOT NULL,其默認值為允許的值列的第1個元素。

來自列規定的允許的值列中的值從1開始編號。
空字符串錯誤值的索引值是0。這說明你可以使用下面的SELECT語句來找出分配了非法ENUM值的行:
MySQL> SELECT * FROM tbl_name WHERE enum_col=0;
NULL值的索引是NULL。

例如,定義為ENUM的列('one','two','three')可以有下面所示任何值。還顯示了每個值的索引: NULL NULL
'' 0
'one' 1
'two' 2
'three' 3
枚舉最多可以有65,535個元素。

當創建表時,ENUM成員值的尾部空格將自動被刪除。
當檢索時,保存在ENUM列的值使用列定義中所使用的大小寫來顯示。請注意可以為ENUM列分配字符集和校對規則。對於二進制或大小寫敏感的校對規則,當為列分配值時應考慮大小寫。


如果在數值上下文中檢索一個ENUM值,將返回列值的索引。例如,你可以這樣從ENUM列搜索數值值:
MySQL> SELECT enum_col+0 FROM tbl_name;如果將一個數字保存到ENUM列,數字被視為索引,並且保存的值是該索引對應的枚舉成員。(但是,這不適合LOAD DATA,它將所有輸入視為字符串)。不建議使用類似數字的枚舉值來定義一個ENUM列,因為這很容易引起混淆。

例如,下面的列含有字符串值'0'、'1'和'2'的枚舉成員,但數值索引值為1、2和3:
numbers ENUM('0','1','2')根據枚舉成員在列定義中列出的順序對ENUM值進行排序。(換句話說,ENUM值根據索引編號進行排序)。

例如,對於ENUM('a','b'),'a'排在'b'前面,但對於ENUM('b','a'),'b'排在'a'前面。空字符串排在非空字符串前面,並且NULL值排在所有其它枚舉值前面。要想防止意想不到的結果,按字母順序規定ENUM列。還可以使用GROUP BY CAST(col AS CHAR)或GROUP BY CONCAT(col)來確保按照詞匯對列進行排序而不是用索引數字。
如果你想要確定一個ENUM列的所有可能的值,使用SHOW COLUMNS FROM tbl_name LIKE enum_col,並解析輸出中第2列的ENUM定義。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved