我想创建一个星期天数列,这样我们就可以选择多个而不是只有一天。
我知道枚举类型可以做到这一点,但它只能包含一项。
如何在PostgreSQL中创建数据类型,以便可以像MySQL上的set一样具有多项选择枚举之类的功能?
发布于 2016-07-08 09:40:38
使用HSTORE列类型。HSTORE存储键/值对。如果您只关心检查键是否存在,则可以使用空值。
参见https://www.postgresql.org/docs/current/static/hstore.html。
例如,要问'x‘是否在我的hstore中?
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)。
发布于 2011-03-03 19:21:41
我猜数组是最接近可怕的set数据类型的。
但该解决方案并未规范化,因此您可能会遇到几个问题。我建议将其存储在适当规范化的表中,特别是当您计划查询所选值或对其执行其他报告时。
发布于 2013-03-26 11:23:47
https://stackoverflow.com/questions/5180010
复制相似问题