ST_DISTANCE_SPHERE
बिंदुओं को POINT(longitude, latitude)
. के रूप में व्यक्त करने की आवश्यकता है , आपने उन्हें अपने कोड में उलट दिया है
set @lat1 = 38.898556;
set @lon1 = -77.037852;
set @lat2 = 38.897147;
set @lon2 = -77.043934;
SET @pt1 = point(@lon1, @lat1);
SET @pt2 = point(@lon2, @lat2);
SELECT ST_Distance_Sphere(@pt1, @pt2)/1000,
lat_lng_distance(@lat1,@lon1,@lat2,@lon2);
+-------------------------------------+-------------------------------------------+
| ST_Distance_Sphere(@pt1, @pt2)/1000 | lat_lng_distance(@lat1,@lon1,@lat2,@lon2) |
+-------------------------------------+-------------------------------------------+
| 0.549154584458455 | 0.5496311783790588 |
+-------------------------------------+-------------------------------------------+
यह एक ऐसा परिणाम देता है जो आपके फ़ंक्शन द्वारा लौटाए गए मान के बहुत करीब होता है।