【问题标题】:Using Variables in SQL 2008 to return more than one record在 SQL 2008 中使用变量返回多条记录
【发布时间】:2010-09-24 01:05:24
【问题描述】:

我很确定这不是正确的做法,所以我正在寻找一些建议。

我不认为我的问题在于我正在尝试解决空间问题。我只是不确定在选择语句中获取纬度和经度并返回地理数据类型的好方法。我已经成功创建了一个地理列并输入了数据。

Use thedatabase;
GO
Declare @Lat numeric(11,6)
Declare @Long numeric(11,6)
DECLARE @g geometry;




Select @Lat = Latitude, @Long = Longitude
from dbo.thetable

set @g = geometry::STGeomFromText('POINT (' + Cast(@Lat as varchar(30)) + ' ' + CAST(@Long as varchar(30)) + ')', 0);


select @g

【问题讨论】:

    标签: tsql sql-server-2008 geography


    【解决方案1】:

    你能澄清一下你想做什么吗?

    如果问题与使用文本有关 - 据我了解,WKT 格式在这里很正常,所以不是问题。

    如果要返回多个几何值,例如:

    SELECT geometry::STGeomFromText('POINT (' + CAST(Latitude as varchar(30))
         + ' ' + CAST(Longitude as varchar(30)) + ')', 0)
    FROM dbo.thetable
    

    如果您想使用多个几何图形,请声明一个表变量并插入此类查询的结果:

    DECLARE @data TABLE (location geometry)
    INSERT @data (location)
    SELECT geometry::STGeomFromText('POINT (' + CAST(Latitude as varchar(30))
         + ' ' + CAST(Longitude as varchar(30)) + ')', 0)
    FROM dbo.thetable
    

    并使用@data 作为一组数据

    【讨论】:

      【解决方案2】:

      几何类型应仅用于投影数据。由于您已经有未投影的纬度/经度数据,您应该改用地理类型。另外,还有一个创建点的静态方法:

      SELECT geography::Point(t.lat, t.lon, 0) FROM yourtable t
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-21
        • 1970-01-01
        • 2017-03-06
        相关资源
        最近更新 更多