PostgreSQL 中的 MySQL SET 类型?

标签 mysql database postgresql database-migration sqldatatypes

<分区>

我正在尝试使用 MySQL SET输入 PostgreSQL,但我只找到 Arrays,它具有非常相似的功能,但不符合要求。

PostgreSQL 是否有相似的数据类型?

最佳答案

您可以使用以下解决方法:

1。 BIT strings

您可以将最多 N 个元素的集合定义为简单的 BIT(N)。 填充和检索有点尴尬——您将不得不使用位掩码作为集合成员。但位串确实对 set operations 大放异彩。 : 交集就是&,并集就是|

这种类型的存储非常高效 - 一位一位,长度开销很小。

另外,长度没有真正限制是很好的(但你必须提前决定)。

2。 HSTORE

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/

相关文章:

sql - 优化 postgres 搜索查询的问题

postgresql - sails -postgresql AdapterError : Unexpected error from database adapter: there is no parameter $1

允许对 JSON 数据进行类似 SQL 查询的 Javascript 库?

mysql - 允许的内存大小在非 PHP MySQL 导入期间耗尽

c++ - 使用嵌入式 mysql C++ 创建触发器

MYSQL - 基于其他列中公共(public)值的列的 SUM

macos - 使用 Homebrew 安装的自动启动 PostgreSQL 的正确方法是什么?

php - 仅当在 mysql 中找到子查询时才条件连接字符串?

mysql - 没有完全正确地获取 SQLQuery - 双重信息

php - mysql - 在 sql 中选择 UNTIL