我在名为schema的列中有此嵌套的json结构:
{"fields" : {"Kommune2015" : {"0101" : "Halden", "0104" : "Moss" }}}
我可以使用以下方法获取值:
select schema::jsonb#>>'{fields,Kommune2015,0101}' from meta;
?column?
---------
Halden
(1 row)
但是,如果我查询不存在的键,我仍然会得到
select schema::jsonb#>>'{fields,Kommune2015,010}' from meta;
?column?
----------
(1 row)
如果键存在,则添加一个where-子句将返回一个值:
select schema::jsonb#>>'{fields,Kommune2015,0101}' from meta where schema::jsonb#>>'{fields,Kommune2015,0101}' is not null;
是否可以缩短此查询,以便不必显式地命名键两次?
这是10.5版。
答案 0 :(得分:1)
您可以使用子查询或CTE。例如
with things as (
select schema::jsonb#>>'{fields,Kommune2015,0101}' thing from meta
)
select thing from things where thing is not null