作者:瀚高PG实验室 (Highgo PG Lab)
PostgreSQL中可用的键值存储是hstore。
hstore的键值存储是一个扩展程序,必须用CREATE EXTENSION hstore来安装。
hstore只用来存储文本。如果存储数值,这些值将被存储为文本。
用于输入和输出的hstore文本表示方式包括零个或多个以逗号隔开的 “key => value” 对。例如 k => v 。这些键值对的顺序没有影响,各个键值对之间和“=>”符号两侧的空格会被忽略,所以当键或值中包含空格、逗号、=s或>s时需要加双引号。当包含双引号或者反斜线时,使用一个反斜线转义。
一个hstore中每个键是唯一的,如果声明了有重复键的hstore,只有一个会被存储到hstore中,而且不会保证哪一个被保留。
键值对中的值可以是NULL,例如 k=>NULL,但是键不能为NULL。如果NULL加上双引号,就会被认为是一个普通的字符串。
hstore操作符
操作符 | 描述 | 例子 |
hstore ->text | 取得键的值(如果不存在就为NULL) | 图1 |
hstore ->text[] | 取得多个键的值(如果不存在就为NULL) | 图2 |
hstore ||hstore | 连接多个hstore | 图3 |
hstore ?text | hstore是否包含键 | 图4 |
hstore ?&text[] | hstore是否包含所有的指定键 | 图5 |
hstore ?|text[] | hstore是否包含任一指定键 | 图6 |
hstore @>hstore | 左操作数是否包含右操作数 | 图7 |
hstore <@hstore | 左操作数是否包含于右操作数 | 图8 |
hstore -text | 从左操作数中删除键 | 图9 |
hstore -text[] | 从左操作数中删除多个键 | 图10 |
hstore -hstore | 从左操作数中删除匹配的对 | 图11 |
%% hstore | 将hstore转换成交替出现键和值的数组 | 图12 |
%# hstore | 将hstore转换成二维的键值数组 | 图13 |
图1
图2
图3
图4
图5
图6
图7
图8
图9
图10
图11
图12
图13