2016-06-08 46 views
0

我正在数据库上运行查询,我在表中有一个“坐标”列。在坐标列中的数据是在以下格式:独立1坐标列成2 Lat和长列Postgresql

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

我需要运行查询,将显示在单独的列的经度和纬度,所以就标记为“纬度”的列显示40.74和另一列标记为“经度”的列显示73.98。

回答

0

假设是JSON列数据类型,你可以选择这样的每一个元素:

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

SQLFiddle

另外,作为注意,没有什么可与问题,可以考虑使用PostGIS存储和管理空间数据。

0

CREATE TABLE tbPlace ( PlaceId INT, 坐标VARCHAR(255) ); (1,'“lat”:40.74,“lng”: - 73.98');插入tbPlace(placeId,coord) 。插入到tbPlace(placeId,coord) values(1,'“lat”: - 20.74,“lng”:20.98');

选择 placeId ,浇铸(SUBSTR(坐标,INSTR(坐标, 'LAT')+ 5,INSTR(坐标, '') - INSTR(坐标, 'LAT')+ 5)作为浮动)作为latitude1 ,cast(substr(coord,instr(coord,'lng')+ 5,length(coord)-instr(coord,'lng')+ 5)as longitude1 from tbPlace;

drop table tbplace;