SELECT
substring_index(maps, ",", 1) AS lng,substring_index(maps, "," ,- 1) AS lat,
ROUND(
6378.138 * 2 * ASIN(
SQRT(
POW(
SIN(
(
获取的纬度 * PI() / 180 - lat * PI() / 180
) / 2
),
2
) + COS(获取的纬度 * PI() / 180) * COS(lat * PI() / 180) * POW(
SIN(
(
获取的经度 * PI() / 180 - lng * PI() / 180
) / 2
),
2
)
)
) * 1000
) AS juli
FROM
list
ORDER BY
juli ASC
代码如上,因为map里的经纬度是xx.xxxxx,xx.xxxxx这种形式显示的,我使用substring_index一个作为lng一个作为lat,但在计算过程中如果不加'就会显示Unknown column 'lat' in 'field list'如果加了'虽然可以显示,但显示的juli全是相同的数据,请问该如何解决呢?
想要实现的效果是juli的值不是相同的,而是经过当前位置经纬度与商家的经纬度计算后的结果。目前我用上面的代码,只能实现juli显示出来的值都是相同的...想要实现的效果如下...
lng
lat
juli
分割出来的经度1
纬度1
1210
分割出来的经度2
纬度2
1215
2 回答

哆啦的时光机
TA贡献1779条经验 获得超6个赞
已经解决啦,给以后遇到类似情况的朋友一个解决方法。
SELECT
ROUND(
6378.138 * 2 * ASIN(
SQRT(
POW(
SIN(
(
获取的纬度 * PI() / 180 - substring_index(maps, "," ,- 1) AS lat * PI() / 180
) / 2
),
2
) + COS(获取的纬度 * PI() / 180) * COS(substring_index(maps, "," ,- 1) AS lat * PI() / 180) * POW(
SIN(
(
获取的经度 * PI() / 180 - substring_index(maps, ",", 1) AS lng * PI() / 180
) / 2
),
2
)
)
) * 1000
) AS juli
FROM
list
ORDER BY
juli ASC
就是把substring_index(maps, "," ,- 1) AS lat
这个直接放到计算里就好了。。。
- 2 回答
- 0 关注
- 347 浏览
添加回答
举报
0/150
提交
取消