Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एमएस-एसक्यूएल में निकटतम स्थान खोजें

इस फ़ंक्शन का उपयोग करें

CREATE FUNCTION dbo.DictanceKM(@lat1 FLOAT, @lat2 FLOAT, @lon1 FLOAT, @lon2 FLOAT)
RETURNS FLOAT 
AS
BEGIN

    RETURN ACOS(SIN(PI()*@lat1/180.0)*SIN(PI()*@lat2/180.0)+COS(PI()*@lat1/180.0)*COS(PI()*@lat2/180.0)*COS(PI()*@lon2/180.0-PI()*@lon1/180.0))*6371
END

आप इस फ़ंक्शन द्वारा ऑर्डर कर सकते हैं, लेकिन बड़े डेटासेट पर यह बहुत धीमा होगा, इसलिए रिकॉर्डसेट को प्रीफ़िल्टर करने का प्रयास करें

यूपीडी:

@chopikadze के परीक्षण डेटा का उपयोग करना:

declare @lat float, @lng float
select @lat = 41.0186, @lng = 28.964701

declare @Location table(Latitude float, Longtitude float, Name nvarchar(50))
insert into @Location(Latitude, Longtitude, Name) values (41.0200500000, 40.5234490000, 'a')
insert into @Location(Latitude, Longtitude, Name) values (41.0185714000, 37.0975924000, 'b')
insert into @Location(Latitude, Longtitude, Name) values (41.0184913000, 34.0373739000, 'c')
insert into @Location(Latitude, Longtitude, Name) values (41.0166667000, 39.5833333000, 'd')
insert into @Location(Latitude, Longtitude, Name) values (41.0166667000, 28.9333333000, 'e')

SELECT ABS(dbo.DictanceKM(@lat, Latitude, @lng, Longtitude)) DistanceKm, * FROM @Location
ORDER BY ABS(dbo.DictanceKM(@lat, Latitude, @lng, Longtitude))

यह मानते हुए कि पृथ्वी एक भू-आकृति नहीं है, लेकिन गोल गेंद है, यदि आपको 1m सटीक सूत्र की आवश्यकता है - मैं इसे ढूंढ सकता हूं, इसे मेरे पास न रखें



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में डिफ़ॉल्ट बाधा क्या है - SQL सर्वर / TSQL ट्यूटोरियल भाग 90

  2. SQL सर्वर 2008 में स्प्लिट फ़ंक्शन

  3. जांचें कि क्या ऑब्जेक्ट SQL सर्वर में OBJECTPROPERTY() के साथ प्राथमिक कुंजी है

  4. SQL सर्वर में इनलाइन टेबल-वैल्यूड फ़ंक्शंस (ITVF) का परिचय

  5. SQL सर्वर में मौजूदा SQL सर्वर तालिका से बैकअप या नई तालिका कैसे बनाएं - SQL सर्वर / TSQL ट्यूटोरियल भाग 105