好吧,我有点被这个数据库困住了,而且我正试图在附近做一个""页面。
我拥有(不幸的是)lat
和lon
列nvarchar
。我无法转换它们,因为它们在其他地方需要作为文本。
我想拿地图点中心,并在一英里左右的地方放一些点。
我可以以某种方式将这两个文本字段连接到一个坐标列中以比较STDistance
吗?
做这样的事情..
SELECT *
FROM goelocs
WHERE coords.STDistance(geography::Point(54.1020, -115.12338, 4326)) <=(1609.344)
或者你能推荐一种更好的方法吗?
提前致谢!
答案 0 :(得分:1)
如果您的NVarchar
列只是数字值,例如:
SQL Server将隐式将它们转换为float
。以下查询将起作用:
SELECT *
FROM geolocs geo
WHERE
ISNUMERIC(geo.lat) = 1
AND ISNUMERIC(geo.lon) = 1
AND geography::Point(geo.lat, geo.lon, 4326).STDistance(geography::Point(54.1020, -115.12338, 4326)) <= (1609.344)