我有一个已迁移到 SQL Server 2008 的 SQL Server 数据库。我想利用空间功能。但是我的数据使用的是更传统的数据类型。例如,我有以下两个表:
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 英里半径范围内的订单?
谢谢!
最佳答案
您需要在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
表将有一个类型为 geography 的字段称为 Position
。
关于sql-server - SQL Server 2008 - 查询空间数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2252636/