mysql枚举enum⽤法_mysql中的枚举类型ENUM的⽤法:mysql中的枚举类型ENUM的⽤法:
(2010-06-18 13:44:13)
mysql中的枚举类型ENUM的⽤法:
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值,将返回列值的索引。例如,你可以这样从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定义。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论