首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在postgresql上创建类似SET的类型

问如何在postgresql上创建类似SET的类型
EN

Stack Overflow用户
提问于 2011-03-03 19:16:42
回答 3查看 14.9K关注 0票数 22

我想创建一个星期天数列,这样我们就可以选择多个而不是只有一天。

我知道枚举类型可以做到这一点,但它只能包含一项。

如何在PostgreSQL中创建数据类型,以便可以像MySQL上的set一样具有多项选择枚举之类的功能?

EN

回答 3

Stack Overflow用户

发布于 2016-07-08 09:40:38

使用HSTORE列类型。HSTORE存储键/值对。如果您只关心检查键是否存在,则可以使用空值。

参见https://www.postgresql.org/docs/current/static/hstore.html。

例如,要问'x‘是否在我的hstore中?

代码语言:javascript
复制
CREATE EXTENSION HSTORE;  --create extension only has to be done once
SELECT * FROM 'x=>null,y=>null,z=>null'::HSTORE ? 'x';

我相信这是O(1)的运算。相比之下,检查ARRAY-type列中的包含性是O(n)。

票数 12
EN

Stack Overflow用户

发布于 2011-03-03 19:21:41

我猜数组是最接近可怕的set数据类型的。

但该解决方案并未规范化,因此您可能会遇到几个问题。我建议将其存储在适当规范化的表中,特别是当您计划查询所选值或对其执行其他报告时。

票数 11
EN

Stack Overflow用户

发布于 2013-03-26 11:23:47

Bit Strings BIT(n)是最接近MySQL的PostgreSQL的SET类型。

对于一周中的几天,请使用BIT(7)。

与MySQL的SET不同,BIT类型的宽度不受限制为64位或更少。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5180010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档