我有一个带有jsonb列的数据库表。
number | data
1 | {"name": "firstName", "city": "toronto", "province": "ON"}
我需要一种更新数据列的方法。 所以我的输出应该看起来像:
{"name": "firstName", "city": "ottawa", "province": "ON", "phone": "phonenum", "prefix": "prefixedName"}
使用json_set可能吗?我已经添加了如下查询:
update table_name set data = jsonb_set(data, '{city}', '"ottawa"') where number = 1;
然而,我需要一种方式来在键不存在时添加新的键值对,如果存在则更新键值对。是否可以在单个查询中实现这一点?
json_build_object
创建更新对象。例如:data->'location' || jsonb_build_object('city', "cityColName", 'phonenum', "phoneCalName")
。这比尝试像@Paarth在下面建议的那样动态创建jsonb字符串要容易得多。 - mmigdol