我找不到任何有关使用 C 库访问 HSTORE 数据的文档。目前我正在考虑在我的查询中将 HSTORE 列转换为数组,但是有没有办法避免这种转换?
问问题
395 次
1 回答
2
libpqtypes
似乎对hstore
.
hstore
另一种选择是避免在代码中直接交互。您仍然可以在数据库中从中受益,而无需在客户端处理其文本表示。假设你想获取一个 hstore 字段;你只需使用:
SELECT t.id, k, v FROM thetable t, LATERAL each(t.hstorefield);
或者在旧 PostgreSQL 版本上,您可以使用古怪和非标准的 set-returning-function-in-SELECT 形式:
SELECT t.id, each(t.hstorefield) FROM thetable t;
(但请注意,如果通过这种方式选择多个记录t
,您会得到奇怪的结果,而LATERAL
这会很好)。
如果您愿意处理 PostgreSQL 数组表示,另一种选择是在查询时使用hstore_to_array
or 。hstore_to_matrix
要创建 hstore 值,您可以使用带数组的 hstore 构造函数。如果您不想在代码中处理 PostgreSQL 的数组表示,则可以依次使用array_agg
over子句创建这些数组。VALUES
所有这些混乱都应该在未来消失,因为 PostgreSQL 9.4 可能在 hstore 和 json 类型之间有更好的互操作性,允许您在与 hstore 交互时只使用 json 表示。
于 2014-03-21T01:51:45.577 回答