2010-02-12 109 views
3

我有一个SQL Server数据库,我已经迁移到SQL Server 2008.我想利用空间功能。但是,我的数据使用更传统的数据类型。举例来说,我有以下两个表:SQL Server 2008 - 查询空间数据

Location 
-------- 
ID char(36) 
Address nvarchar (256) 
City nvarchar (256) 
State char (2) 
PostalCode char (10) 

Order 
----- 
LocationID char(36) 
Product nvarchar(30) 
Quantity int 
TotalPrice decimal 

我如何使用SQL Server 2008的空间特征的特定邮政编码10英里半径范围内获得订单?

谢谢!

回答

3

您需要在您的Location表中存储经度和纬度,并且您还需要获取邮编的纬度和经度。

SQL Server只能使用坐标。您可能需要使用reverse geocoding服务来获取您的位置的坐标。

在任何情况下,这是你的地理信息查询可以看怎么样在SQL Server 2008:以上

DECLARE @some_point geography; 
SET @some_point = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326); 

SELECT 
    Order.Product 
FROM 
    Order 
INNER JOIN 
    Location ON (Location.ID = Order.LocationID) 
WHERE 
    Location.Position.STDistance(@some_point) < 16093; 

假定您Location表将有一个名为Positiongeography类型的字段。