当前位置:  开发笔记 > 后端 > 正文

哪些数据库系统支持ENUM数据类型,哪些不支持?

如何解决《哪些数据库系统支持ENUM数据类型,哪些不支持?》经验,为你挑选了2个好方法。

接下来提出这个问题:" 数据库枚举 - 优点和缺点 ",我想知道哪些数据库系统支持枚举数据类型,以及有关它们如何执行的一些细节(例如,内部存储的内容,限制是什么,查询语法含义,索引含义,...).

用例的讨论或利弊应该在其他问题中进行.



1> Tomalak..:

我知道MySQL确实支持ENUM:

数据类型实现为具有关联字符串的整数值

单个枚举最多可以有65.535个元素

每个字符串都有一个数字等价物,按照定义的顺序从1开始计数

该字段的数值可通过" SELECT enum_col+0" 访问

在非严格的SQL模式下,分配not-in-list值不一定会导致错误,而是分配一个特殊的错误值,数值为0

排序以数字顺序(例如,定义的顺序)发生,而不是字符串等价物的字母顺序

赋值可以通过值字符串或索引号来工作

这个:ENUM('0','1','2')应该避免,因为它'0'会有整数值1



2> mat..:

PostgreSQL从8.3开始支持ENUM.对于旧版本,您可以使用:

您可以通过执行以下操作来模拟ENUM:

CREATE TABLE persons (
  person_id int not null primary key,
  favourite_colour varchar(255) NOT NULL,
  CHECK (favourite_colour IN ('red', 'blue', 'yellow', 'purple'))
);

你也可以:

CREATE TABLE colours (
  colour_id int not null primary key,
  colour varchar(255) not null
)
CREATE TABLE persons (
  person_id int not null primary key,
  favourite_colour_id integer NOT NULL references colours(colour_id),
);

当你了解最喜欢的颜色时,你可以添加一个连接,但是你可以通过在颜色表中添加一个条目来添加颜色,而不是每次都不需要更改模式.您还可以为颜色添加属性,例如HTML代码或RVB值.

您也可以创建自己的类型来执行枚举,但我认为它不会比varchar和CHECK.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有