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. Буквено-цифрово сортиране

  2. Оптимизация на SQL заявки

  3. Клавиш за бърз достъп за промяна на съхранена процедура в ssms

  4. SQL Server - Запитване на системни обекти

  5. Групирайте близки числа