UPDATE tablename SET tags = jsonb_set(tags-'landuse_area', '{landuse_area}',('"' || round((ST_Area(ST_Transform(geom,4527)) * 0.0015) :: NUMERIC,3) || '"')::jsonb, TRUE) WHERE tags @> '{"name":"张三"}';
- round的目的是保留3位小数
- st_area是计算多边形的面积,后面的0.0015是面积单位转换为亩
- st_transform是投影转换,这里我表中原始的geom是4326,不适合计算面积,所以在这里转换为4527计算面积
- ::NUMERIC是转换为numeric数据类型
- ::jsonb是转换为jsonb类型