<分区>
我正在尝试使用 MySQL
SET输入 PostgreSQL
,但我只找到 Arrays,它具有非常相似的功能,但不符合要求。
PostgreSQL
是否有相似的数据类型?
最佳答案
您可以使用以下解决方法:
您可以将最多 N 个元素的集合定义为简单的 BIT(N)
。
填充和检索有点尴尬——您将不得不使用位掩码作为集合成员。但位串确实对 set operations 大放异彩。 : 交集就是&
,并集就是|
。
这种类型的存储非常高效 - 一位一位,长度开销很小。
另外,长度没有真正限制是很好的(但你必须提前决定)。
HSTORE
类型是一个扩展,但非常容易安装。简单执行
CREATE EXTENSION hstore
对于大多数安装 (9.1+) 将使其可用。有传言说 PostgreSQL 9.3 将把 HSTORE
作为标准类型。
它不是真正的集合类型,更像是 Perl 哈希或 Python 字典:它保留任意集合的 key
=>value
对。
这样的话,它不是很高效(当然不是 BIT 字符串效率),但它确实提供了集合所必需的功能:||
用于并集,但是交集有点尴尬:使用
slice(a,akeys(b)) || slice(b,akeys(a))
您可以阅读有关 HSTORE 的更多信息 here .
关于PostgreSQL 中的 MySQL SET 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14674461/