PostgreSQL中的hstore模块
之前已经介绍过hstore模块的作用和操作符。这次我们继续了解此模块的其他内容。
hstore函数
这里我们列举一些hstore模块提供的函数。
|
函数 |
返回值 |
描述 |
例子 |
|
hstore(record) |
hstore |
从一个记录或行中创建hstore |
见图1 |
|
hstore(text[]) |
hstore |
从数组中创建hstore |
|
|
hstore(text[], text[]) |
hstore |
从不同的键值数组中创建hstore |
|
|
hstore(text, text) |
hstore |
创建单一项目hstore |
见图2 |
|
akeys(hstore) |
text[] |
取出hstore的键组成一个数组 |
|
|
skeys(hstore) |
setof text |
取出hstore的键组成一个集合 |
|
|
avals(hstore) |
text[] |
取出hstore的值组成一个数组 |
见图3 |
|
svals(hstore) |
setof text |
取出hstore的值组成一个集合 |
|
|
slice(hstore, text[]) |
hstore |
提取一个hstore的一个子集 |
|
|
each(hstore) |
setof(key text, value text) |
取出hstore的键和值组成一个集合 |
见图4 |
|
exist(hstore,text) |
boolean |
hstore是否包含key |
|
|
defined(hstore,text) |
boolean |
hstore是否包含key上非空值 |
|
|
delete(hstore,text) |
hstore |
删除key值匹配的一个键值对 |
见图5 |
|
delete(hstore,text[]) |
hstore |
删除key值匹配的多个键值对 |
|
|
delete(hstore,hstore) |
hstore |
删除匹配第二个参数的键值对 |
我们以下图片来展示相关函数的操作结果:

图1

图2

图3

图4

图5
索引支持
hstore为@>、?、?&、和?|操作符提供GiST和GIN索引。
对于 = 操作符,hstore也支持btree或者哈希索引,这允许hstore列被声明为UNIQUE,或者被用于GROUP BY, ORDER BY,或者DISTINCT表达式中。hstore值的排序顺序不是特别有用,但是这些索引可能对等值查询来说很有用。
hstore类型由于其内在的自由度,可能会包含很多不同的键。而检查有效的键则是应用程序的任务。
转载自:https://blog.csdn.net/pg_hgdb/article/details/79612825


