1

ユーザーが郵便番号を挿入できるページがあり、コードの近くにあるすべての郵便番号が返されます。

今、私はこのテーブルを持っています

CREATE TABLE [dbo].[zip](
    [zipcode] [varchar](5) NOT NULL,
    [state] [varchar](2) NULL,
    [city] [varchar](50) NULL,
    [longitude] [float] NULL,
    [latitude] [float] NULL,        
    [CreateStamp] [smalldatetime] NULL,
    [state_name] [varchar](50) NULL,        
)

これを行う方法がわかりません。完全な指示を与えることができれば、それは素晴らしいことです

結果として、ユーザーが自分の郵便番号を挿入すると、クエリは自分の郵便番号から 50 マイル以内のすべての郵便番号を返します。

4

1 に答える 1

0

SQL Server 2008以降を使用している場合は、データGEOGRAPHY型を使用できます。まず、Geography郵便番号に基づいてセンターの位置を取得し、次に指定された距離内にあるすべてのレコードを選択する必要があります。距離を計算するには、STDistanceメソッドを使用します。次に例を示します。

DECLARE @cZip VARCHAR(5)
SET @cZip = '<center zip code>'
DECLARE @dMin DECIMAL = 50 * 1609.344 -- metres

DECLARE @c GEOGRAPHY
SELECT @c = GEOGRAPHY::Parse('Point(' + CAST(longitude AS VARCHAR) + ' ' + CAST(latitude AS VARCHAR) + ')')
FROM zip
WHERE zipcode = @cZip

SELECT * 
FROM zip 
WHERE @c.STDistance(GEOGRAPHY::Parse('Point(' + CAST(longitude AS VARCHAR) + ' ' + CAST(latitude AS VARCHAR) + ')')) <= @dMin
于 2013-03-11T01:42:57.447 に答える