--calculates the distance between two coordinate points (longitude, latitude) of the Earth SQL functionCREATE FUNCTION [dbo].[fngetdistance](@LatBegin REAL,@LngBegin REAL,@LatEnd REAL,@LngEnd REAL)RETURNS FLOAT asBEGIN --distance (km) 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 @DistanceEND/*Fortune Plaza Longitude: 114.02644397853898 Latitude: 22.536917850961675 everbright Bank Longitude: 114.02633400796937 Latitude: 22.537137898472157*/SELECTId,name,dbo.fngetdistance (114.02633400796937,22.537137898472157, Gislng,gislat) asDistance fromYx_nurseSELECTDbo.fngetdistance (114.02633400796937,22.537137898472157, Gislng,gislat) asDistance, Yx_nurse.* fromYx_nurseWHEREDbo.fngetdistance (114.02633400796937,22.537137898472157, Gislng,gislat)< 0.100
Calculate distance by latitude and longitude | Sql