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

Khoảng cách giữa hai điểm sử dụng kiểu dữ liệu Địa lý trong sqlserver 2008?

Nếu bạn có Vĩ độ và Kinh độ ở dạng độ ( giống như trong bảng của bạn ), thì bạn có thể sử dụng chức năng sau:

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

HOẶC nếu bạn nhấn mạnh vào loại Địa lý, cách sử dụng là:

DECLARE @g geography;
DECLARE @h geography;
SET @g = geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326);
SET @h = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);
SELECT @g.STDistance(@h);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các bản sửa lỗi liên quan đến hiệu suất cho SQL Server 2012

  2. MySQL - Ý nghĩa của KEY CHÍNH, KEY DUY NHẤT và KEY khi được sử dụng cùng nhau trong khi tạo bảng

  3. Tránh đặt tên theo thủ tục do người dùng lưu trữ SP% hoặc SP_%

  4. DESC và ASC như một tham số trong thủ tục được lưu trữ

  5. Cách lấy dữ liệu tháng trước và dữ liệu tháng cho đến nay