mysql 中的enum枚举类型
来源:互联网 发布:淘宝数据查询 编辑:程序博客网 时间:2024/05/17 06:44
感觉最近被enum坑惨了,原以为绝对没有问题的sql神奇的错了,数据离谱到我都不信,php开发使用enum类型绝对不是一个省事的选择,把enum的value定义为数字(0,1,2)之类的更是坑爹。
以下内容转载于:http://www.cnblogs.com/skillCoding/archive/2012/03/14/2395404.html,感谢原作者。
ENUM
是一个字符串对象,其值通常选自一个允许值列表中,该列表在表创建时的列规格说明中被明确地列举。
在下列某些情况下,值也可以是空串(""
) 或 NULL
:
- 如果将一个无效值插入一个
ENUM
(即,一个不在允许值列表中的字符串),空字符串将作为一个特殊的错误值被插入。事实上,这个字符串有别于一个"普通的"空字符串,因为这个字符串有个数字索引值为 0。稍后有更详细描述。 - 如果一个
ENUM
被声明为NULL
,NULL
也是该列的一个合法值,并且该列的缺省值也将为NULL
。如果一个ENUM
被声明为NOT NULL
,该列的缺省值将是该列表所允许值的第一个成员。
每个枚举值均有一个索引值:
- 在列说明中列表值所允许的成员值被从 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换个枚举最大可以有 65535 个成员值。
从 MySQL 3.23.51 开始,当表被创建时,ENUM
值尾部的空格将会自动删除。
当为一个 ENUM
列赋值时,字母的大小写是无关紧要的。然而,以后从列中检索出来的值的大小写却是匹配于创建表时所指定的允许值。
如果在一个数字语境中检索一个ENUM
,列值的索引值将被返回。例如,你可以像这样使用数字值检索一个 ENUM
列:
mysql> SELECT enum_col+0 FROM tbl_name;
如果将一个数字存储到一个 ENUM
中,数字被当作为一个索引值,并且存储的值是该索引值所对应的枚举成员。(但是,这在 LOAD DATA
将不能工作,因为它视所有的输入均为字符串。) 在一个 ENUM
字符串中存储数字是不明智的,因为它可能会打乱思维。
ENUM
值依照列规格说明中的列表顺序进行排序。(换句话说,ENUM
值依照它们的索引号排序。)举例来说,对于 ENUM("a", "b")
"a"
排在 "b"
后,但是对于 ENUM("b", "a")
, "b"
却排在 "a"
之前。空字符串排在非空字符串前,NULL
值排在其它所有的枚举值前。为了防止意想不到的结果,建议依照字母的顺序定义 ENUM
列表。也可以通过使用GROUP BY CONCAT(col)
来确定该以字母顺序排序而不是以索引值。
如果希望得到一个 ENUM
列的所有可能值,可以使用 SHOW COLUMNS FROM table_name LIKE enum_colum
- mysql 中的enum枚举类型
- mysql中的枚举类型ENUM的用法:
- Java中的枚举类型Enum
- mysql中的ENUM类型
- mysql中的ENUM类型
- mysql中的ENUM类型 .
- 取得枚举类型enum中的元素名称
- C/C++中的枚举类型enum
- java中的enum枚举类型的适用范围
- java中的枚举类型enum的使用
- C#中的枚举类型(enum type)
- Java中的枚举类型enum的使用
- C# 中的枚举类型 enum (属于值类型)
- Java enum 枚举类型
- C#枚举类型enum
- C#枚举类型enum
- C#枚举类型enum
- enum枚举类型学习
- [PHP]字符串操作
- 32位操作系统是什么意思?
- C#导出带格式的Excel
- 安卓6.0运行时权限处理方案
- python pip安装包
- mysql 中的enum枚举类型
- MVP模式从入门到精通
- css小技巧
- 机器学习:从编程的角度去理解逻辑回归
- U盘去除写保护
- 如何使用QQ群日历和群活动进行会议室安排
- Ubuntu14.04环境下配置TFTP服务器
- Maven无法创建包含webapp文件,国内连接maven官方的仓库更新依赖库,网速一般很慢,
- Qt5.7+Opencv2.4.9人脸识别(二)人脸采集