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

前言

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

发现问题

因为之前是没有问题的,所以把问题指向了数据,因为是外部数据,不是通过系统打点获取,发现是因为经纬度反了,location的字段存储的point数据,没有按照要求存储,错误的存储成POINT(纬度 经度),正确的应该存储城经度在前,纬度在后,正确的格式数据如下图
mysql使用st_distance_sphere函数报错Incorrect arguments to st_distance_sphere_第1张图片
在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了

你可能感兴趣的:(mysql,数据库)