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'