您当前的位置: 首页 > 数据库教程 > MySQL教程 > mysql中的枚举类型ENUM的用法

mysql中的枚举类型ENUM的用法

作者:不详 来源:网络 发布时间: 2011-10-04 17:38 点击:
mysql中的枚举类型ENUM是一个字符串对象,它的值是自表创建时在列规定中显式枚举的一列值。 在某些情况下,ENUM值也可以为空字符串('')或NULL: 如果你将一个非法值插入ENUM(也就是说,允许的值列之外的字符串),将插入空字符串以作为特殊错误值。该字符串与普通空字符

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列搜索数值值:
  
  mysql>SELECT enum_col+0FROM 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定义。

分享到:
本文"mysql中的枚举类型ENUM的用法"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(1)
100%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4