mysql里如何使用判断语句?

我当前在数据库里计算距离,并用距离进行排序,当遇到有的商家没有输入经纬度时,就会使距离变的特别大。请问该如何进行判断解决这个问题呢?

代码如下:

SELECT
    substring_index(maps, ",", 1) AS lng,
    substring_index(maps, "," ,- 1) AS lat,
    ROUND(
        6378.138 * 2 * ASIN(
            SQRT(
                POW(
                    SIN(
                        (
                            32.640351 * PI() / 180 - substring_index(maps, ",", - 1) * PI() / 180
                        ) / 2
                    ),
                    2
                ) + COS(32.640351 * PI() / 180) * COS(
                    substring_index(maps, ",", - 1) * PI() / 180
                ) * POW(
                    SIN(
                        (
                            117.013281 * PI() / 180 - substring_index(maps, ",", 1) * PI() / 180
                        ) / 2
                    ),
                    2
                )
            )
        ) * 1000
    ) AS distance
FROM
    list
ORDER BY
    distance ASC

代码如上,如果我使用HAVING distance < 1000000的确可以解决我所描述问题,但问题也出现了,就是该商家不显示了,我的想法是,如何在mysql查询语句里判断maps这个字段,如果为空,就不显示或计算距离,最好能够变成文字提示未知距离。请问该如何实现呢?谢谢!~

阅读 3.6k
5 个回答

已经解决,
case when maps then
计算公式
else '未知距离' end distance
即可...(但因为有了字符串,会导致排序变成按数字顺序排序...)

if(判断,'正确','错误')?
case when 距离>0 then '**' when 距离 is null then '无位置' else '未知' end distance?

可以尝试下和C语言混编~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题