亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

mysql用substring_index并用as lng和as lat后計算出來的結果是一樣的?

mysql用substring_index并用as lng和as lat后計算出來的結果是一樣的?

PHP
喵喵時光機 2019-03-14 11:16:25
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這個直接放到計算里就好了。。。

查看完整回答
反對 回復 2019-03-18
?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

為什么不到PHP封裝一個方法呢

查看完整回答
反對 回復 2019-03-18
  • 2 回答
  • 0 關注
  • 362 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號