【问题标题】:Separate 1 Coordinates column into 2 Lat and Long Columns Postgresql将 1 Coordinates 列分成 2 Lat 和 Long 列 Postgresql
【发布时间】:2016-06-09 07:08:59
【问题描述】:

我正在对数据库运行查询,并且我在表中有一个“坐标”列。坐标列的数据格式如下:

{"lat":40.74,"lng":-73.98}

我需要运行一个查询,将纬度和经度显示在不同的列中,因此会有一个标有“纬度”的列显示 40.74,另一个标有“经度”的列显示 73.98。

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    创建表 tbPlace ( PlaceId 整数, 坐标 varchar(255) );

    插入 tbPlace(placeId, coord) 值(1, '"lat":40.74,"lng":-73.98');

    插入 tbPlace(placeId, coord) 值(1, '"lat":-20.74,"lng":20.98');

    选择 地点 ID ,cast(substr(coord, instr(coord, 'lat')+5, instr(coord, ',')-instr(coord, 'lat')+5) as float) as latitude1 ,cast(substr(coord, instr(coord, 'lng')+5, length(coord)-instr(coord, 'lng')+5) as float) as longitude1 来自 tbPlace;

    删除表 tbplace;

    【讨论】:

      【解决方案2】:

      假设您的列数据类型是 json,您可以像这样选择每个元素:

      SELECT 
        column ->>'lat'::text AS lat, 
        column ->>'long'::text AS long 
      FROM table
      

      SQLFiddle

      另外请注意,这与问题无关,请考虑使用PostGIS 来存储和管理空间数据。

      【讨论】:

        猜你喜欢
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-07
        • 1970-01-01
        • 1970-01-01
        • 2021-04-18
        • 1970-01-01
        相关资源
        最近更新 更多