变量替换查询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对象的主要内容,如果未能解决你的问题,请参考以下文章

Postgres:查询多个jsonb字段

结合关系查询提高 Postgres jsonb 查询的性能

Postgres jsonb 查询动态值

如何在 Vapor/Fluent 中正确查询 Postgres JSONB 字段

带有 jsonb 参数的 Postgres 函数

Postgres:从匿名jsonb数组元素中删除对象