前言
最近使用空间点位查询数据时函数报错Incorrect arguments to st_distance_sphere报错。
发现问题
因为之前是没有问题的,所以把问题指向了数据,因为是外部数据,不是通过系统打点获取,发现是因为经纬度反了,location的字段存储的point数据,没有按照要求存储,错误的存储成POINT(纬度 经度),正确的应该存储城经度在前,纬度在后,正确的格式数据如下图

在point类型中范围是(-90,90),一旦经纬度反了就会报错。
解决问题
只需要将经纬度两个字段的数据项调换,再重新生成下location数据就可以了。
- 首先先查询出错误的经纬度数据,这样可以看到错误的数据有多少条
select * from table where longitude > 90
- 使用sql语句交换两列的值。这时候可以使用业务上没有数据的一列,或者加一列
UPDATE table
SET new = latitude, latitude= longitude , longitude = new , new = NULL
WHERE longitude > 90
最后再将location字段重新生成下就OK了
文章讲述了在进行空间点位查询时遇到`Incorrectargumentsto_distance_sphere`错误,原因是外部数据的经纬度存储格式错误。解决方法是检测并交换错误的经纬度数据,使用SQL语句进行字段值的更新,确保POINT类型数据格式正确(-90,90)。

3430

被折叠的 条评论
为什么被折叠?



