Heim >Datenbank >MySQL-Tutorial >Berechnen Sie den Abstand zwischen Längen- und Breitengrad zweier Punkte unter SQL SERVER
Vor ein paar Tagen hat ein Kunde eine solche Anfrage gestellt: eine mobile Website zur Essensbestellung, Hotels im Umkreis von 5 Kilometern um den aktuellen Standort abfragen , und dann kann der Kunde essen gehen.
Nachdem ich diese Anfrage erhalten hatte, wusste ich nicht, wie ich anfangen sollte, und fügte der Tabelle des Hotels zwei Felder hinzu, um den Längen- und Breitengrad des Hotels zu speichern um den aktuellen Längen- und Breitengrad des Standorts des Kunden zu erhalten, werden diese übergeben und dann mit dem Längen- und Breitengrad des Hotels in der Datenbank berechnet, um dies herauszufinden.
Um den Abstand zwischen zwei Punkten in der Datenbank abzufragen, muss diese Funktion in der Datenbank definiert werden.
Ich habe lange online gesucht, konnte diese Funktion aber nicht finden. Schließlich habe ich dieses Problem mit Hilfe eines Freundes auf CSDN gelöst. Ich bin Lordbaby sehr dankbar, dass er mir diese Funktion zur Verfügung gestellt hat, um mehr Freunden zu helfen, die sie wollen.
Der Code lautet wie folgt:
--计算地球上两个坐标点(经度,纬度)之间距离sql函数 --作者:lordbaby --整理:www.aspbc.com CREATE FUNCTION [dbo].[fnGetDistance](@LatBegin REAL, @LngBegin REAL, @LatEnd REAL, @LngEnd REAL) RETURNS FLOAT AS BEGIN --距离(千米) DECLARE @Distance REAL DECLARE @EARTH_RADIUS REAL SET @EARTH_RADIUS = 6378.137 DECLARE @RadLatBegin REAL,@RadLatEnd REAL,@RadLatDiff REAL,@RadLngDiff REAL SET @RadLatBegin = @LatBegin *PI()/180.0 SET @RadLatEnd = @LatEnd *PI()/180.0 SET @RadLatDiff = @RadLatBegin - @RadLatEnd SET @RadLngDiff = @LngBegin *PI()/180.0 - @LngEnd *PI()/180.0 SET @Distance = 2 *ASIN(SQRT(POWER(SIN(@RadLatDiff/2), 2)+COS(@RadLatBegin)*COS(@RadLatEnd)*POWER(SIN(@RadLngDiff/2), 2))) SET @Distance = @Distance * @EARTH_RADIUS --SET @Distance = Round(@Distance * 10000) / 10000 RETURN @Distance END
-跟坐标距离小于5公里的数据 SELECT * FROM 商家表名 WHERE dbo.fnGetDistance(121.4625,31.220937,longitude,latitude) < 5
Die Längen- und Breitengrade sind hier jeweils die Längen- und Breitengrade des Hotels, und 121.4625,31.220937 sind die aktuellen Längengrade Kunde erhält per Mobiltelefon, gefolgt von Die 5 bedeutet innerhalb von 5 Kilometern.
[Verwandte Empfehlungen]
1. Kostenloses MySQL-Online-Video-Tutorial
2. Neuestes MySQL-Handbuch-Tutorial
3.Chuanzhi Podcast Liu Daocheng MySql-Serie Video-Tutorials
Das obige ist der detaillierte Inhalt vonBerechnen Sie den Abstand zwischen Längen- und Breitengrad zweier Punkte unter SQL SERVER. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!