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)
笔记:
您创建了具有NOT NULL
行为的4 列,但仅插入了 2 列。它会返回一个错误。
使用INSERT INTO
代替SELECT INTO
。表已经创建。
SELECT..FROM
在调用 DECLARE 表时使用。这些是空间坐标,因此您应该将它们与空间地理点一起存储
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
代替,
也可以看看,
归档时间: |
|
查看次数: |
44550 次 |
最近记录: |