Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 从Postgres中的JSONB中提取多个值_Postgresql_Jsonb - Fatal编程技术网

Postgresql 从Postgres中的JSONB中提取多个值

Postgresql 从Postgres中的JSONB中提取多个值,postgresql,jsonb,Postgresql,Jsonb,我有一张这样的桌子: 身份证件 属性 1. {“a”:{“kind”:“kind_1”,“value”:“val_1”},“b”:{“kind”:“kind_2”,“value”:“val_2”} 2. {“c”:{“种类”:“种类3”,“价值”:“价值1”} 3. {“a”:{“kind”:“kind_1”,“value”:“val_1”},“d”:{“kind”:“kind_4”,“value”:“val_4”}。。。。。 您可以使用JSON路径查询: select distinct v.i

我有一张这样的桌子:

身份证件 属性 1. {“a”:{“kind”:“kind_1”,“value”:“val_1”},“b”:{“kind”:“kind_2”,“value”:“val_2”} 2. {“c”:{“种类”:“种类3”,“价值”:“价值1”} 3. {“a”:{“kind”:“kind_1”,“value”:“val_1”},“d”:{“kind”:“kind_4”,“value”:“val_4”}。。。。。
您可以使用JSON路径查询:

select distinct v.item #>> '{}'
from the_table t
  cross join jsonb_array_elements(jsonb_path_query_array(t.attrs, '$.**.value')) as v(item);
v.item#>'{}'
是一个将标量JSON值转换为
文本的技巧(因为强制转换不起作用)

或者,您可以使用jsonb_each()两次:



您使用的是哪个Postgres版本?@a_horse_,没有名称Postgres 12.3
select distinct v.value
from the_table t
  cross join jsonb_each(t.attrs) as i(key, item)
  cross join jsonb_each_text(i.item) as v(key, value)
where v.key = 'value'