hstore

一个提供用于存储键/值对的数据类型的 Contrib 模块

hstore 是一个 Contrib 模块,提供了一个用于存储键/值对的数据类型 (hstore)。这使得能够在一个 PostgreSQL 值中存储键/值对的集合。

hstore 添加于 PostgreSQL 8.2

安装

假设 hstore 模块在您的系统上可用,请将其(作为超级用户)安装到要使用它的数据库中

CREATE EXTENSION hstore;

请注意,此扩展程序会将许多(截至 PostgreSQL 12 为 58 个)函数安装到创建它的模式中,因此最好将其安装到专用模式中,使用

CREATE EXTENSION hstore SCHEMA someschema;

变更历史

开发中

示例

hstore 使用的简单示例

testdb=# CREATE TABLE hstore_test(id SERIAL, val HSTORE);
NOTICE:  CREATE TABLE will create implicit sequence "hstore_test_id_seq" for serial column "hstore_test.id"
CREATE TABLE
testdb=# INSERT INTO hstore_test VALUES(DEFAULT, 'foo=>"bar"');
INSERT 0 1
testdb=# SELECT * from hstore_test;
 id |     val      
----+--------------
  1 | "foo"=>"bar"
(1 row)
将值追加到 HSTORE
testdb=# UPDATE hstore_test SET val = val || 'a=>"b"' WHERE id=1;
UPDATE 1
testdb=# SELECT * FROM hstore_test ;
 id |          val           
----+------------------------
  1 | "a"=>"b", "foo"=>"bar"
(1 row)

或者

testdb=# UPDATE hstore_test SET val = val || hstore('fish','finger') WHERE id=1;
UPDATE 1
testdb=# SELECT * FROM hstore_test;
 id | val 
----+------------------------
  1 | "a"=>"b", "foo"=>"bar", "fish"=>"finger"
(1 row)
在 HSTORE 中查找值
testdb=# SELECT id, val FROM hstore_test WHERE val->'foo' ='bar'; 
 id |          val           
----+------------------------
  1 | "a"=>"b", "foo"=>"bar", "fish"=>"finger"
(1 row)
将 HSTORE 的键/值检索为集合
testdb=# SELECT * FROM EACH((SELECT val FROM hstore_test));
 key  | value  
------+--------
 x    | y
 foo  | bar
 fish | finger
(3 rows)
从 HSTORE 中删除值
testdb=*# UPDATE hstore_test SET val = val - 'x'::TEXT;
UPDATE 1
testdb=*# SELECT * from hstore_test;
 id |               val        
----+--------------------------------
  2 | "foo"=>"bar", "fish"=>"finger"
(1 row)
从 HSTORE 中删除匹配的键/值对
testdb=*# UPDATE hstore_test SET val = val - 'fish => finger'::hstore;
UPDATE 1
testdb=*# SELECT * from hstore_test;
 id |      val 
----+---------------
  2 | "foo"=>"bar", 
(1 row)
在 HSTORE 中的键上创建索引
CREATE INDEX index_foo ON hstore_test((val->'foo'));
  • PostgreSQL 文档: hstore

分类

Contrib 模块数据类型

参见

hstore_plperlhstore_plpythonhstore 技巧

反馈

提交您对 "hstore" 的任何评论、建议或更正 此处