【问题标题】:Can't add to json value from another jsonb column无法从另一个 jsonb 列添加到 json 值
【发布时间】:2020-11-10 09:28:22
【问题描述】:

我需要在结果 json 中添加新节点“myNode”

这里查询:

select  myJsonB || jsonb '{"myNode":"myNode_value"}' as data from myTable
where myJsonB @> '{"id": 11111}'

'

而且它工作正常。结果 json 成功添加了值 myNode_value 的新节点 myNode

不错。

但我需要从另一个 jsonb 列 (meta) 别名 metaValue 设置值。我试试这个:

select  myJsonB  || jsonb '{"myNode" : metaValue}' as data, meta->'accounting'->'checkout'->>'url' as metaValue from myTable
where myJsonB @> '{"id": 11111}'

但我得到错误:

ERROR:  invalid input syntax for type json
LINE 1: select  data || jsonb '{"myNode":metaValue}' as data, meta->...

例如如果在列 meta (jsonb)

meta->'accounting'->'checkout'->>'url' = "hello"

然后在 myNode 字段中的结果 json 中必须设置值 hello

【问题讨论】:

  • @a_horse_with_no_name 否。“myNode”的值必须是另一列“meta”的值。值位于 meta->'accounting'->'checkout'->>'url'

标签: postgresql-9.5


【解决方案1】:

我找到了解决办法

select myJsonB  || jsonb_build_object('checkout', meta->'accounting'->'checkout'->>'url')from myTable
 where myJsonB  @> '{"id": 11111}'

我使用 jsonb_build_object 并不能正常工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    相关资源
    最近更新 更多