Postgresql 将字段追加到PSQL jsonb数组
我有一个名为Postgresql 将字段追加到PSQL jsonb数组,postgresql,jsonb,Postgresql,Jsonb,我有一个名为test\u table的表,其结构如下: id | 1 lookup | 166 arguments | {"title": "Title", "name": "XYZ", "address": "1 main street"} 我在这个表中有很多条目遵循类似的结构(为了这个问题,我简化了它) 我想更新某些行(基于ID列表),以便在arguments列中有一个额外字段,这
test\u table
的表,其结构如下:
id | 1
lookup | 166
arguments | {"title": "Title", "name": "XYZ", "address": "1 main street"}
我在这个表中有很多条目遵循类似的结构(为了这个问题,我简化了它)
我想更新某些行(基于ID列表),以便在arguments列中有一个额外字段,这将导致:
id | 1
lookup | 166
arguments | {"title": "Title", "name": "XYZ", "address": "1 main street", "county": "County Name", "code": "4XC"}
我尝试了以下操作,但无法使其正常工作:
UPDATE test_table
SET arguments = arguments || '"county": "County Name", "code": "4XC"'::jsonb
WHERE id in (1,2,etc.);
谁能告诉我我做错了什么
这是我收到的错误:
Expected end of input, but found ":"
这不是有效的JSON,您需要在它周围使用
{}
UPDATE test_table
SET arguments = arguments || '{ "county": "County Name", "code": "4XC" }'::jsonb
WHERE id in (1,2,etc.);
为了避免格式问题,并使绑定参数的使用更容易,请使用jsonb\u build\u object
UPDATE test_table
SET arguments = arguments || jsonb_build_object('county': ?, 'code': ?) )
WHERE id in (1,2,etc.);