首页 > 解决方案 > Postgres如何将字段转换为json数组

问题描述

我在我的数据库的列中保存了这样的 json:

{"a":137,"b":"28","c":"1","d":"5","e":19,"f":true}

是否可以通过查询将“e”转换为数组而不删除值?

{"a":137,"b":"28","c":"1","d":"5","e":[19],"f":true}

标签: jsonpostgresql

解决方案


update the_table
  set the_column = the_column||jsonb_build_object('e', array_to_json(array[the_column -> 'e']))
where ...

array[the_column -> 'e']从 key 引用的单个元素创建一个“本机”数组'e'。该数组被转换为 JSON,并使用它创建一个新的 JSON 值jsonb_build_object(),然后将其连接到现有值。这将覆盖现有的密钥"e"

以上假设该列被定义为jsonb(它应该是)。如果它只是json你需要铸造它以使替换工作||


推荐阅读