- 枚举(enum)类型是由一个静态、值的有序集合构成的数据类型。它们等效于很多编程语言所支持的enum类型。枚举类型的一个例子可以是一周中的日期,或者一个数据的状态值集合;
- 枚举类型在PostgreSQL中属于自定义类型,包含一组静态且有序的值;
- 枚举类型可以使用CREATE TYPE命令创建;
CREATE TYPE Week as ENUM('Sun','Mon','Tues','Wed','Thur','Fri','Sat');
复制
- 一旦被创建,枚举类型可以像很多其他类型一样在表和函数定义中使用;
CREATE TABLE demo_duty(person text, Weekday Week);
INSERT INTO demo_duty values('Zhang','Sun');
INSERT INTO demo_duty values('Li','Mon');
INSERT INTO demo_duty values('Wang','Tues');
INSERT INTO demo_duty values('Chen','Wed');
INSERT INTO demo_duty values('Liu','Thur');
INSERT INTO demo_duty values('Sun','Fri');
INSERT INTO demo_duty values('Zhao','Sat');
SELECT * FROM demo_duty;
复制
- 如果插入 demo_duty 表的 Weekday 列中的值没有在枚举类型 Week 中则会报错;
INSERT INTO demo_duty values('Zhang','Thu');
ERROR: invalid input value for enum week: "Thu"
LINE 1: INSERT INTO demo_duty values('Zhang','Thu');
复制
- 枚举类型中指定的值大小写敏感,匹配时值必须完全一致,,例如 Mon 与 MON 是不同的值;
INSERT INTO demo_duty values('Zhang','MON');
ERROR: invalid input value for enum week: "MON"
LINE 1: INSERT INTO demo_duty values('Zhang','MON');
复制
- 查询 demo_duty 表中枚举类型的定义;
\dT+ Week
SELECT * FROM pg_enum;
复制
- 一个枚举类型的值的排序是该类型被创建时所列出的值的顺序,枚举类型支持所有比较操作符和MIN()、MAX()等聚合函数;
select * from demo_duty ;
select min(weekday),max(weekday) from demo_duty;
复制
SELECT * FROM demo_duty WHERE Weekday > 'Tues' ORDER BY Weekday;
SELECT person FROM demo_duty WHERE Weekday = (SELECT MIN(Weekday) FROM demo_duty);
复制
-
每个枚举类型都是独立存储的,一个枚举类型占4个字节;
-
枚举类型的函数
函数 | 描述 |
---|---|
enum_first(anyenum) | anyenum代表一个创建的枚举类型,函数返回此枚举类型的第一个值 |
enum_last(anyenul) | 返回枚举类型的最后一个值 |
enum_range(anyenum) | 以一个有序的数组形式返回输入枚举类型的所有值 |
enum_range(anyenum,anyenum) | 以一个有序数组返回在给定的两个枚举类型之间的范围,两个参数值必须时相同的枚举类型,如果第一个参数为null,其结果时从枚举类型的第一个值开始到给定的结束值,如果第二个参数为null,其结果将以枚举类型的给定的值开始到枚举类型的最后一个值结束(注意:给定的值也会包含在结果中 ) |
select enum_first(null::week),enum_first('Mon'::week),enum_last(null::week),enum_last('Mon'::week);
复制
select enum_range('Mon'::week);
select enum_range('Mon'::week,'Fri'::week);
select enum_range(null,'Fri'::week);
select enum_range('Mon'::week,null);
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
相关阅读
外国CTO也感兴趣的开源数据库项目——openHalo
小满未满、
1785次阅读
2025-04-21 16:58:09
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
381次阅读
2025-04-15 14:48:05
转发有奖 | PostgreSQL 16 PGCM高级认证课程直播班招生中!
墨天轮小教习
193次阅读
2025-04-14 15:58:34
中国PostgreSQL培训认证体系新增PGAI应用工程师方向
开源软件联盟PostgreSQL分会
186次阅读
2025-05-06 10:21:13
华象新闻 | PostgreSQL 18 Beta 1、17.5、16.9、15.13、14.18、13.21 发布
严少安
154次阅读
2025-05-09 11:34:10
PG生态赢得资本市场青睐:Databricks收购Neon,Supabase融资两亿美元,微软财报点名PG
老冯云数
148次阅读
2025-05-07 10:06:22
SQL 优化之 OR 子句改写
xiongcc
141次阅读
2025-04-21 00:08:06
告别老旧mysql_fdw,升级正当时
NickYoung
126次阅读
2025-04-29 11:15:18
PostgreSQL中文社区亮相于第八届数字中国峰会
PostgreSQL中文社区
110次阅读
2025-05-07 10:06:20
PostgreSQL的dblink扩展模块使用方法
szrsu
107次阅读
2025-04-24 17:39:30