mysql使用st_distance_sphere函数报错Incorrect arguments to st_distance_sphere

文章讲述了在进行空间点位查询时遇到`Incorrectargumentsto_distance_sphere`错误,原因是外部数据的经纬度存储格式错误。解决方法是检测并交换错误的经纬度数据,使用SQL语句进行字段值的更新,确保POINT类型数据格式正确(-90,90)。
摘要由CSDN通过智能技术生成

前言

最近使用空间点位查询数据时函数报错Incorrect arguments to st_distance_sphere报错。

发现问题

因为之前是没有问题的,所以把问题指向了数据,因为是外部数据,不是通过系统打点获取,发现是因为经纬度反了,location的字段存储的point数据,没有按照要求存储,错误的存储成POINT(纬度 经度),正确的应该存储城经度在前,纬度在后,正确的格式数据如下图
在这里插入图片描述
在point类型中范围是(-90,90),一旦经纬度反了就会报错。

解决问题

只需要将经纬度两个字段的数据项调换,再重新生成下location数据就可以了。

  1. 首先先查询出错误的经纬度数据,这样可以看到错误的数据有多少条
select * from table where longitude > 90
  1. 使用sql语句交换两列的值。这时候可以使用业务上没有数据的一列,或者加一列
UPDATE table  
SET new = latitude, latitude= longitude , longitude = new , new = NULL 
WHERE longitude > 90

最后再将location字段重新生成下就OK了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值