Bootstrap

Pgsql:json字段查询与更新

1.查询json字段的值

SELECT attribute_data->>'设施类别' mycol, * FROM gis_coord_data
WHERE  attribute_data->>'设施类别'='阀门井'

查询结果如下:

2.更新json字段中的某个属性值

UPDATE gis_coord_data
SET attribute_data=(attribute_data::jsonb ||'{"设施类别":"水表"}')
WHERE coord_id='f4f11c40-3c56-4f31-9afe-9bcca5cf81c8'

如果更新的属性值是表达式或其他字段拼接而成,可以如下调整

UPDATE gis_coord_data
SET attribute_data=(attribute_data::jsonb ||('{"设施类别":"'|| mycol ||'"}')::jsonb )
WHERE coord_id='f4f11c40-3c56-4f31-9afe-9bcca5cf81c8'

-- 这里的 mycol 是表的另一个字段名,也可以是其他表达式动态拼接

-- 用另一个属性'设施类别' 来更新属性'设施名称' 的示例

UPDATE gis_coord_data
SET attribute_data=(attribute_data::jsonb ||('{"设施名称":"'|| (attribute_data->>'设施类别')::text ||'"}')::jsonb )
WHERE coord_id='f4f11c40-3c56-4f31-9afe-9bcca5cf81c8'

;