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 回答