如何插入到表变量中?

Gou*_*pal 2 sql-server datatypes sql-server-2016 table-variable

我想在表变量中存储 2 个坐标点(纬度、经度)。

我试过了:

declare @coordinates table(latitude1 decimal(12,9), 
                           longitude1 decimal(12,9), 
                           latitude2 decimal(12,9), 
                           longitude2 decimal(12,9)) 

select latitude, 
       longitude into @coordinates 
from   loc.locations 
where  place_name IN ('Delhi', 'Mumbai')
select @coordinates
Run Code Online (Sandbox Code Playgroud)

它显示错误:

消息 102,级别 15,状态 1,第 2 行 '@coordinates' 附近的语法不正确。

选择查询的结果:

select latitude, 
       longitude 
from   loc.locations 
where  place_name IN ('Delhi', 'Mumbai')
Run Code Online (Sandbox Code Playgroud)

是:

latitude    longitude
28.666670000    77.216670000
19.014410000    72.847940000
Run Code Online (Sandbox Code Playgroud)

如何将值存储在表数据类型中?

我运行了查询SELECT @@VERSION并得到了结果:

Microsoft SQL Server 2016 (RTM) - 13.0.1601.5 (X64) 2016 年 4 月 29 日 23:23:58 版权所有 (c) Microsoft Corporation Standard Edition(64 位)在 Windows 10 Enterprise 6.3(内部版本 16299:)

Edg*_*ron 11

使用这个:

DECLARE @coordinates TABLE (
    latitude1 DECIMAL(12,9),
    longitude1 DECIMAL(12,9)
) 

INSERT into @coordinates
SELECT
    latitude, 
    longitude
FROM loc.locations 
WHERE place_name IN ('Delhi', 'Mumbai');

SELECT * FROM @coordinates
Run Code Online (Sandbox Code Playgroud)

笔记:

  1. 您创建了具有NOT NULL行为的4 列,但仅插入了 2 列。它会返回一个错误。

  2. 使用INSERT INTO代替SELECT INTO。表已经创建。

  3. SELECT..FROM在调用 DECLARE 表时使用。


Eva*_*oll 5

这些是空间坐标,因此您应该将它们与空间地理点一起存储

CREATE TABLE t (
  pt1 geography,
  pt2 geography
);

INSERT INTO t (pt1,pt2) VALUES 
(
  geography::Point(77.216670000, 28.666670000, 4326),
  geography::Point(72.847940000, 19.014410000, 4326)
);

SELECT  pt1.STAsText() AS pt1, pt1.STAsText() AS pt2
FROM t;

pt1                        pt2
POINT (28.66667 77.21667)  POINT (28.66667 77.21667)
Run Code Online (Sandbox Code Playgroud)

第三个参数 (4326) 是空间参考标识符(SRID)。“SRID 对应于基于用于...映射的特定椭球的空间参考系统。” SQL Server 目前只支持这一个值。

请注意,如果它们是方向,即 pt1-pt2 代表飞机路线或其他东西,我会使用 aLine代替,

也可以看看,