![深入浅出PostgreSQL](https://wfqqreader-1252317822.image.myqcloud.com/cover/148/30573148/b_30573148.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
4.7 枚举类型
枚举(enum)类型包含一组静态有序的值。枚举类型和很多编程语言所支持的枚举类型是等价的。枚举类型常用于一周中的日期,或者一个数据的状态值集合。
4.7.1 声明枚举类型
枚举类型可以使用CREATE TYPE创建,代码如下:
![](https://epubservercos.yuewen.com/8D7397/16679181404813706/epubprivate/OEBPS/Images/91_2.jpg?sign=1739251588-A9CMf1Scc9tQixBGCsXNL6s0BwK9hsqP-0-2f4101c3cff67eeb758dd9b5e00b187c)
在创建枚举类型后,就可以将其作为PostgresSQL预定义的类型使用了,代码如下:
![](https://epubservercos.yuewen.com/8D7397/16679181404813706/epubprivate/OEBPS/Images/91_3.jpg?sign=1739251588-9u29mTBUH4oi2mKqGsPlsShA3urTsmvK-0-4865b4cf399e930974d8c0687c37693d)
4.7.2 排序
一个枚举类型值的顺序是该类型被创建时所列出的值的顺序。枚举类型支持所有的标准比较运算符和相关聚集函数。
【举例】排序的基本操作,代码如下:
![](https://epubservercos.yuewen.com/8D7397/16679181404813706/epubprivate/OEBPS/Images/92_1.jpg?sign=1739251588-mLgAqz7iz5sCuYKXCImtdBWZSY3AT5kx-0-c9a4ee9fa63f4ca8c8f442fe3db824e7)
4.7.3 注意枚举类型安全性
每一种枚举类型都是独立的,并且不能和其他枚举类型进行比较,代码如下:
![](https://epubservercos.yuewen.com/8D7397/16679181404813706/epubprivate/OEBPS/Images/92_2.jpg?sign=1739251588-Mag2AQhZLn3FYULqOhNSLHJ2zbSNtGOX-0-ee26b37bf160a7d2f4e09faf76b2378b)
如果确实需要将两个不同的枚举类型进行比较,则用户可以写一个自定义的运算符,或者在查找语句中添加显式格式,代码如下:
![](https://epubservercos.yuewen.com/8D7397/16679181404813706/epubprivate/OEBPS/Images/93_1.jpg?sign=1739251588-s5haAEM9FmccPFW7GmWhoEQBc7txECAH-0-832545ea1faf448f293bbdf58553fb93)