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

Nhận tất cả các điểm (hình tròn có bán kính), điểm đó trùng với điểm đã cho

Vâng, đây chính xác là loại điều mà geography và các phương pháp không gian là tốt. Đây là một ví dụ ngắn:

DECLARE @Restaurant TABLE (
    Name nvarchar(50),
    Location geography,
    DeliveryRadiusMetres int
);

INSERT @Restaurant
VALUES
-- long lat
('Dominos','POINT(-0.109339 51.532835)',2000 ),
('Pizza Hut','POINT(-0.102961 51.541157)',2000 );

Lưu ý rằng ở đây để xây dựng geography các giá trị mà tôi đang sử dụng một chuyển đổi ngầm định từ chuỗi, mà đằng sau hậu trường gọi là geography::Parse .

DECLARE @MyLocation geography = 'POINT(-0.115063 51.550231)';

SELECT
    Name
FROM
    @Restaurant R
WHERE
    R.Location.STDistance(@MyLocation) <= R.DeliveryRadiusMetres
;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khóa gì | tài nguyên bộ đệm truyền thông có nghĩa là?

  2. Cách tạo bí danh kiểu dữ liệu do người dùng xác định trong SQL Server bằng T-SQL

  3. classNotFoundException trong việc tải trình điều khiển JDBC

  4. Bảng tạm thời cục bộ và toàn cầu trong SQL Server

  5. Mẹo sửa lỗi phân mảnh chỉ mục máy chủ SQL