Sql-Server
如何插入 TABLE 變數?
我想在表變數中儲存 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
它顯示錯誤:
消息 102,級別 15,狀態 1,第 2 行“@coordinates”附近的語法不正確。
選擇查詢的結果:
select latitude, longitude from loc.locations where place_name IN ('Delhi', 'Mumbai')
是:
latitude longitude 28.666670000 77.216670000 19.014410000 72.847940000
如何將值儲存在表數據類型中?
我執行了查詢
SELECT @@VERSION
並得到了結果:Microsoft SQL Server 2016 (RTM) - 13.0.1601.5 (X64) Apr 29 2016 23:23:58 版權所有 (c) Microsoft Corporation Standard Edition (64-bit) on Windows 10 Enterprise 6.3 (Build 16299: )
使用這個:
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
筆記:
- 您創建了 4 列具有
NOT NULL
行為,但您只插入 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)
第三個參數 (4326) 是空間參考標識符(SRID)。“SRID 對應於基於用於…映射的特定橢球的空間參考系統。” SQL Server 目前僅支持這一值。
注意,如果它們是方向,即 pt1-pt2 代表飛機路線或其他東西,我會使用 a
Line
代替,也可以看看,