如何更新jsonb列的内部值?以指定classifiedId的book.name更新为例
更新PostgreSQL JSONB字段指定属性的方法
核心SQL语句
要实现需求,你可以使用PostgreSQL的jsonb_set函数,结合条件过滤来更新目标条目:
UPDATE 你的表名 SET external_ids = jsonb_set( external_ids, '{book,name}', '"new name"' ) WHERE external_ids->>'classifiedId' = '665';
语句说明
jsonb_set函数:用于修改JSONB字段的指定路径值,参数分别为:- 目标JSONB列(
external_ids) - 要修改的属性路径(
'{book,name}',表示book对象下的name属性) - 新的属性值(注意要加双引号,因为JSON字符串需要引号包裹)
- 目标JSONB列(
WHERE条件:通过->>操作符提取classifiedId的文本值,筛选出classifiedId等于665的条目
验证更新结果
执行完更新后,可以用以下语句验证:
SELECT external_ids->'book'->>'name' AS book_name FROM 你的表名 WHERE external_ids->>'classifiedId' = '665';
内容的提问来源于stack exchange,提问作者NeverSleeps
相关产品推荐
相关产品推荐

