我正在对数据库运行查询,并且表中有一个“坐标”列。坐标列中的数据采用以下格式:
{"lat":40.74,"lng":-73.98}
我需要运行一个查询,在单独的列中显示纬度和经度,因此会有一个标记为“latitude”的列显示40.74,另一列标记为“经度”,显示73.98。
答案 0 :(得分:0)
假设json是你的列数据类型,你可以选择这样的每个元素:
SELECT
column ->>'lat'::text AS lat,
column ->>'long'::text AS long
FROM table
另请注意,问题无关紧要,请考虑使用PostGIS来存储和管理空间数据。
答案 1 :(得分:0)
创建表tbPlace ( PlaceId int, coord varchar(255) );
插入tbPlace(placeId,coord) 值(1,'" lat":40.74," lng": - 73.98');
插入tbPlace(placeId,coord) 值(1,'" lat": - 20.74," lng":20.98');
选择 placeId ,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;
drop table tbplace;