gpt4 book ai didi

mysql - Haversine 公式在查询中返回 null

转载 作者:搜寻专家 更新时间:2023-10-30 20:36:18 28 4
gpt4 key购买 nike

SELECT 
id,
( 3959 * acos( cos( radians(51.509980) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-0.133700 ) ) + sin( radians(51.509980) ) * sin(radians(lat)) ) ) AS distance
FROM tbl_event
HAVING distance < 5
ORDER BY distance

此处 -0.133700 会产生问题,其他负值(如 -122 等)可以正常工作。

如果有人知道这个问题,请帮忙。

最佳答案

它返回 null 因为 acos 函数得到一个大于 1 或小于 -1 的参数。试试这个:

Select id, 3959 * acos(if(d>1, 1, if(d<-1, -1, d))) as distance
From (SELECT id,
cos( radians(51.509980) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-0.133700 ) ) + sin( radians(51.509980) ) * sin(radians(lat)) AS d
FROM tbl_event ) t1
HAVING distance < 5
ORDER BY distance

关于mysql - Haversine 公式在查询中返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38093038/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com