Postgres创建枚举类型用法
枚举类型时包含一系列有序的静态值集合的一个数据类型,等于某些变成语言中的enum类型。
枚举类型的使用
与MySQL不一样,在PG中使用枚举类型需要先使用CREATE TYPE来创建此枚举类型。我们先列举个示例:
-- 建立一个名为week的枚举类型
CREATE TYPE week AS ENUM ('Sun', 'Mon', 'Tues', 'Wed', 'Thur', 'Fri', 'Sat');
--建表,插入数据
create table duty(persion text, day week);
insert into duty values('aa','Sun');
insert into duty values('bb','Mon');
-- 查询结果
postgres@postgres=# select * from duty;
persion | day
---------+-----
aa | Sun
bb | Mon
(2 rows)
postgres@postgres=# select * from duty where day='Sun';
persion | day
---------+-----
aa | Sun
(1 row)
--如果类型不对,会报错
postgres@postgres=# select * from duty where day='Suna';
ERROR: invalid input value for enum week: "Suna"
LINE 1: select * from duty where day='Suna';
定义好类型后,我怎么查看类型有没有创建或者查询有类型的具体定义呢?在ltsql中可通过\dT
命令查看枚举类型的定义:
postgres@postgres=# \dT week
List of data types
Schema | Name | Description
--------+------+-------------
public | week |
(1 row)
postgres@postgres=# \dT+ week
List of data types
Schema | Name | Internal name | Size | Elements | Owner | Access privileges | Description
--------+------+---------------+------+----------+----------+-------------------+-------------
public | week | week | 4 | Sun +| postgres | |
| | | | Mon +| | |
| | | | Tues +| | |
| | | | Wed +| | |
| | | | Thur +| | |
| | | | Fri +| | |
| | | | Sat | | |
(1 row)
也可以直接查询系统表pg_enum
查看枚举类型的定义:
postgres@postgres=# select * from pg_enum;
oid | enumtypid | enumsortorder | enumlabel
-------+-----------+---------------+-----------
20984 | 20983 | 1 | Sun
20986 | 20983 | 2 | Mon
20988 | 20983 | 3 | Tues
20990 | 20983 | 4 | Wed
20992 | 20983 | 5 | Thur
20994 | 20983 | 6 | Fri
20996 | 20983 | 7 | Sat
(7 rows)
枚举类型说明
在枚举类型中,值的顺序是创建枚举类型时定义的顺序,所有的比较运算符及相关的聚集函数都可以支持枚举类型。可以看下面的例子:
postgres@postgres=# select min(day),max(day) from duty;
min | max
-----+-----
Sun | Mon
(1 row)
postgres@postgres=# select enum_first(null::week), enum_last(null::week);
enum_first | enum_last
------------+-----------
Sun | Sat
(1 row)
免责声明:
1、本站资源由自动抓取工具收集整理于网络。
2、本站不承担由于内容的合法性及真实性所引起的一切争议和法律责任。
3、电子书、小说等仅供网友预览使用,书籍版权归作者或出版社所有。
4、如作者、出版社认为资源涉及侵权,请联系本站,本站将在收到通知书后尽快删除您认为侵权的作品。
5、如果您喜欢本资源,请您支持作者,购买正版内容。
6、资源失效,请下方留言,欢迎分享资源链接
文章评论