sql >> Database teknologi >  >> RDS >> Sqlserver

Få alle punkter (cirkler med radius), der overlapper et givet punkt

Ja, det er præcis den slags ting, der geography og rumlige metoder er gode til. Her er et kort eksempel:

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 );

Bemærk, at her for at konstruere geography værdier Jeg bruger en implicit konvertering fra streng, som bag kulisserne kalder geography::Parse .

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

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


  1. Oracle Security Alert for CVE-2021-44228

  2. Hvordan sender man en streng med ' ' (tidsstempel) i forberedt erklæring?

  3. Brug MySQL-konsollen gennem et PowerShell-script

  4. Er MySQL index_length i bytes?