Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

bán kính tìm kiếm theo vĩ độ / kinh độ

Vì bạn đang sử dụng SQL 2008, hãy xem xét sử dụng các khả năng không gian địa lý gốc. Bạn có thể làm những điều thú vị như:

  • Tạo một cột được tính toán liên tục của loại địa lý thể hiện quan điểm của bạn.
  • Tạo chỉ mục không gian trên cột được tính toán. Điều này sẽ làm cho những thứ như yourPoint.STDistance(@otherPoint) <= @distance hiệu quả

Như vậy:

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. Làm cách nào để kiểm soát phiên bản của Lược đồ cơ sở dữ liệu?

  2. Kích hoạt chèn các giá trị cũ- giá trị đã được cập nhật

  3. Kết hợp PowerShell và Trình quản lý chẩn đoán SQL để tự động giám sát SQL Server

  4. Truy vấn ngày của SQL Server

  5. Ý nghĩa cú pháp của RAISERROR ()