在postgresql中修改jsonb字段中的某一个值

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类型

你可能感兴趣的:(数据库,postgresql)