Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Jarak antara dua titik menggunakan tipe data Geografi di sqlserver 2008?

Jika Anda memiliki Lintang dan Bujur dalam bentuk derajat (seperti di tabel Anda ), maka Anda dapat menggunakan fungsi berikut:

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

ATAU jika Anda bersikeras pada jenis Geografi, penggunaannya adalah:

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. Melarikan diri dari karakter pelarian tidak berfungsi – Operator SEPERTI SQL

  2. Urutan Sortir SQL dengan nilai Null terakhir

  3. Setiap ekspresi GROUP BY harus berisi setidaknya satu kolom yang bukan referensi luar

  4. Cara menghasilkan bidang kenaikan otomatis dalam kueri pemilihan

  5. Mencatat SEMUA Pertanyaan di Database SQL Server 2008 Express?