Php SQL返回空的距离值
在下面的脚本中,我将返回基于纬度和经度坐标的距离。当my ui.userlat和ui.userlong与经过的纬度(-20.31225580)和经度(-40.30603010)相同时,就会出现问题,因为它返回空距离,因此不会产生SQL结果 PS:我正在使用MYSQLPhp SQL返回空的距离值,php,mysql,sql,coordinates,Php,Mysql,Sql,Coordinates,在下面的脚本中,我将返回基于纬度和经度坐标的距离。当my ui.userlat和ui.userlong与经过的纬度(-20.31225580)和经度(-40.30603010)相同时,就会出现问题,因为它返回空距离,因此不会产生SQL结果 PS:我正在使用MYSQL SELECT ui.id, pt.token, (6371 * acos(cos(radians(-20.299626)) * cos(radians(ui.userlat)) * cos( rad
SELECT ui.id, pt.token,
(6371 * acos(cos(radians(-20.299626)) * cos(radians(ui.userlat))
* cos( radians( ui.userlong ) - radians(-40.292269) ) +
sin(radians(-20.299626) ) * sin(radians(ui.userlat)))) AS distance
FROM user_info AS ui, push_tokens AS pt
WHERE pt.user_id = ui.id AND ui.tipoConta = 2 HAVING distance < 15 ORDER BY distance
选择ui.id,pt.token,
(6371*acos(cos(弧度(-20.299626))*cos(弧度(ui.userlat))
*cos(弧度(ui.userlong)-弧度(-40.292269))+
sin(弧度(-20.299626))*sin(弧度(ui.userlat)))作为距离
从用户信息作为用户界面,推送令牌作为pt
其中,pt.user_id=ui.id和ui.tipoConta=2,距离小于15个数量级
即使距离为0,如何使其返回值?
我曾尝试在SQL中将距离的默认值设置为0,但直到现在都没有成功您使用的是什么DBMS?微软SQL,Oracle,mySQL?您应该能够将计算或列包装在
IsNull
、NVL
或其他类似函数中,这些函数用您指定的值替换NULL
值。如果所有其他操作都失败,您可以在以下情况下使用案例进行检查。。。是空的,那么。。。其他的以距离结束
我认为当起点和终点相同时,Haversine公式不会崩溃。Tim Biegeleisen,它不会崩溃。它只返回nothing=)然后取COALESCE(表达式,0)
,其中expression
是哈弗森公式。我以前和哈弗森一起工作过,但我似乎不记得这个问题。也许我从来没有在非常小的距离使用过它。谢谢大家!我让它和COALESCE一起工作!您使用的是什么数据库管理系统?微软SQL,Oracle,mySQL?您应该能够将计算或列包装在IsNull
、NVL
或其他类似函数中,这些函数用您指定的值替换NULL
值。如果所有其他操作都失败,您可以在以下情况下使用案例进行检查。。。是空的,那么。。。其他的以距离结束
我认为当起点和终点相同时,Haversine公式不会崩溃。Tim Biegeleisen,它不会崩溃。它只返回nothing=)然后取COALESCE(表达式,0)
,其中expression
是哈弗森公式。我以前和哈弗森一起工作过,但我似乎不记得这个问题。也许我从来没有在非常小的距离使用过它。谢谢大家!我让它和COALESCE一起工作!