1. 程式人生 > >mysql5.7 geometry型別的使用

mysql5.7 geometry型別的使用

insert:
假設資料表A中的geometry型別的欄位是‘location’,則新增的語句是:

 insert into A('id','name','location') value(null,'測試資料',ST_GeomFromText('POINT(104.066143 30.573095)'));

POINT函式裡面的引數左邊是經度,右邊是緯度,改變值
(update)也是一樣的用法。

select
獲取座標資訊:

SELECT  ASTEXT(location) AS location FROM  A 

計算兩點之間的距離:

select  ST_Distance_Sphere (POINT(104.079971
, 30.554951),location) AS distant from A

(以上座標是隨便找的座標,左邊是經度右邊是緯度,不要定位來轟炸我。。。)

距離篩選,比如5公里範圍內的資料:

select id,name, ST_Distance_Sphere (POINT(104.079971, 30.554951),location) AS distant from A where ST_Distance_Sphere (POINT(104.079971, 30.554951),location) < 5000 ORDER BY distant

目前我的mysql版本是5.7.17( select @@version;可查自己的版本),越新的版本可以使用的函式更多,詳情請參考:

MYSQL官網

寫在最後:經測試當距離範圍為1000米的時候,查詢的資料沒有找到自身的座標,不知道是不是一個bug,基於這個原因目前專案計算距離範圍還是使用的更穩健的redis3.2的GEO,具體使用請參考:redis GEO地理位置