变量替换查询postgres jsonb对象

Posted

技术标签:

【中文标题】变量替换查询postgres jsonb对象【英文标题】:variable substitution querying postgres jsonb object 【发布时间】:2018-10-08 10:54:52 【问题描述】:

您好,我正在查询一个 JSONb 对象,其中搜索键取决于另一个键/值对的值。考虑以下示例:

select 
'"a":"b","b":2'::jsonb->'a',--b,
('"a":"b","b":2'::jsonb->'a')::text,--"b"
'"a":"b","b":2'::jsonb->('"a":"b","b":2'::jsonb->'a')::text--null, desired output is 2

不知何故,我需要将“b”取消引用到像“b”这样的 json 搜索路径

任何建议将不胜感激

【问题讨论】:

【参考方案1】:

您应该使用->> 运算符而不是->。有不需要的双引号:

select 
'"a":"b","b":2'::jsonb->'a',--b,
 ('"a":"b","b":2'::jsonb->>'a')::text,--"b"
'"a":"b","b":2'::jsonb->('"a":"b","b":2'::jsonb->>'a')::text;

【讨论】:

以上是关于变量替换查询postgres jsonb对象的主要内容,如果未能解决你的问题,请参考以下文章