0

好吧,我有点卡在这个数据库上,我正在尝试为它创建一个“附近”页面。

我所拥有的(不幸的是)是一个lat和一个lonnvarchar。我无法转换它们,因为它们在其他地方需要作为文本。

我想以地图点为中心,在一英里左右的地方放一些点。

我可以以某种方式将这 2 个文本字段加入一个坐标列进行比较STDistance吗?

做这样的事情..

SELECT * 
FROM goelocs 
WHERE coords.STDistance(geography::Point(54.1020, -115.12338, 4326)) <=(1609.344) 

或者你能推荐一个更好的方法吗?

提前致谢!

4

1 回答 1

1

如果您的NVarchar列只是数值,例如:

  • 纬度:'54.103'
  • 朗:'-115.1'

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) 
于 2014-05-28T21:09:15.017 回答