sql >> データベース >  >> RDS >> Sqlserver

指定された点と重なるすべての点(半径のある円)を取得します

    はい、これはまさに geography のようなものです と空間的な方法が得意です。以下に短い例を示します:

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

    ここで geography を構築することに注意してください 値 文字列からの暗黙的な変換を使用しています。これは舞台裏で geography::Parse を呼び出します .

    DECLARE @MyLocation geography = 'POINT(-0.115063 51.550231)';
    
    SELECT
        Name
    FROM
        @Restaurant R
    WHERE
        R.Location.STDistance(@MyLocation) <= R.DeliveryRadiusMetres
    ;
      

    1. 孫の親カウントベースを表示します

    2. MySQLデータベースからGoogleマップに複数のマーカーを追加する

    3. MariaDBでサブストリングを置き換える2つの方法

    4. Oracle19cOpen_cursorが問題を超えました