我关注了这个博客 [http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/sql-server-2008-proximity-search-with-th] 并按照指导做了一切,我很高兴一切顺利,下面提到了我的表定义,下面也提到了我正在执行的查询。
我正在使用可从https://www.ordnancesurvey.co.uk/opendatadownload/products.html下载的 CodePointData 数据
使用 [TestDb] 去
/****** Object: Table [dbo].[PostCode] Script Date: 08/23/2012 05:32:05 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[PostCode]( [PostCode] [nvarchar](10) NOT NULL, [Coordinates] [geography] NOT NULL, [Coordinates1] [geography] NULL, CONSTRAINT [PK_PostCode] PRIMARY KEY CLUSTERED ( [PostCode] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
开 [初级] ) 开 [初级]
GO SELECT distinct(left(h.postcode,4)) from postcode g join postcode h on g.postcode <> h.postcode and g.postcode ='IG1 4LF' and h.postcode <> 'IG1 4LF' Where g.coordinates.STDistance(h.coordinates)<=(1*1609.344) order by left(h.postcode,4)
当我运行上述查询时,它提供了许多不属于该半径的邮政编码。我正在使用另一个站点http://www.freemaptools.com/find-uk-postcodes-inside-radius.htm验证我的结果,这个站点说 1 英里半径包含邮政编码 IG1、IG2、IG3,但是当我我正在运行上述查询,我的结果是 E12、IG1、IG2、IG3、IG4、IG5、IG6。我无法找出为什么它在半径一英里内给了我这么多或邮政编码。
请帮忙