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

特定の郵便番号から半径 20 マイル以内のすべての郵便番号 (住所) を取得する SQL クエリ

    計算が複雑なため、UDF を使用します。

    ここでは、テストする緯度/経度とともにベースの緯度/経度を渡します

    明確にするために: 距離は「カラスが飛ぶように」であり、走行距離ではありません。

    例:

    Declare @BaseZip varchar(10) ='02806'Declare @Within int =20Distinct BaseZip =A.ZipCode ,B.ZipCode ,B.CityName ,B.StateCode ,Miles =[dbo].[udf -Geo-Calc-Miles] (A.Lat,A.Lng,B.Lat,B.Lng) From (Select Distinct ZipCode,Lat,Lng From [dbo].[ZipCodes] where [email protected]
     ) A Join [dbo].[ZipCodes] B on [dbo].[udf-Geo-Calc-Miles] (A.Lat,A.Lng,B.Lat,B.Lng) <=@Within Order By 5   

    返品

    興味があればUDF

    CREATE Function [dbo].[udf-geo-Calc-Miles] (@Lat1 float,@Lng1 float,@Lat2 Float,@Lng2 float) Float を Begin として返す @Miles Float =(Sin( Radians(@Lat1)) * Sin(Radians(@Lat2))) + (Cos(Radians(@Lat1)) * Cos(Radians(@Lat2)) * Cos(Radians(@Lng2) - Radians(@Lng1)) ) Return Case When @Miles is null then 0 else abs((3958.75 * Atan(Sqrt(1 - power(@Miles, 2)) / @Miles))) endEnd  

    いくつかの繰り返し/同一のマイルに気付く場合があります。ご存知かもしれませんが、都市には別の名前がある場合があります。たとえば、Brown University と Brown Station はロードアイランド州プロビデンスにありますが、組織には独自の郵便番号がある場合もあります。




    1. MySQL:UNIQUE、ただしDEFAULTNULL-テーブルの作成により許可されます。複数のNULLを挿入できます。なんで?

    2. VS 2010 ビルド データベース プロジェクトが SQL04151 を受け取る

    3. trunc(date、'IW')とは正確には何ですか?

    4. Digital Ocean Postgresマネージドデータベースに接続するために、SSL証明書(ca-cert)をnode.js環境変数に追加するにはどうすればよいですか?