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

अक्षांश / देशांतर द्वारा त्रिज्या खोज

चूंकि आप SQL 2008 पर हैं, इसलिए मूल भू-स्थानिक क्षमताओं का उपयोग करने पर विचार करें। आप फैंसी चीजें कर सकते हैं जैसे:

  • भूगोल प्रकार का एक स्थायी गणना कॉलम बनाएं जो आपकी बात का प्रतिनिधित्व करता हो।
  • गणना किए गए कॉलम पर एक स्थानिक सूचकांक बनाएं। यह yourPoint.STDistance(@otherPoint) <= @distance जैसी चीज़ें बना देगा कुशल

इस तरह:

alter table [yourTable] add [p] as geography::Point(Latitude, Longitude, 4326) persisted;
create spatial index [yourSpatialIndex] on [yourTable] ([p])

declare @Latitude float = <somevalue>, @Longitude float = <somevalue>;
declare @point geography = geography::Point(@Latitude, @Longitude, 4326);
declare @distance int = <distance in meters>;

select * from [yourTable] where @point.STDistance([p]) <= @distance;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कॉमन टेबल एक्सप्रेशन (CTE) का उपयोग कब करें

  2. SQL सर्वर हमेशा उपलब्धता समूह पर:स्थापना और कॉन्फ़िगरेशन, भाग 2

  3. गणना (*) बनाम गणना (1) - SQL सर्वर

  4. बेहतर स्क्रिप्ट जो SQL सर्वर में SERVERPROPERTY () से सभी गुण लौटाती है

  5. एक तिथि में मिलीसेकंड को छोड़ना