はい、これはまさに 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 ;
プレ>