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「@座標」付近の構文が正しくありません。
選択クエリの結果:
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)2016年4月29日23:23:58 Copyright(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
注意:
NOT NULL
ビヘイビアーで4列を作成しましたが、挿入するのは2列のみです。エラーを返します。
INSERT INTO
の代わりにSELECT INTO
を使用してください。テーブルはすでに作成されています。
SELECT..FROM
を使用します。これらは空間座標なので、 空間地理ポイント で保存する必要があります
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)
3番目のパラメーター(4326)は 空間参照識別子 (SRID)です。 「SRIDは、マッピングに使用される特定の楕円に基づく空間参照系に対応しています。」 SQL Serverは現在、この1つの値のみをサポートしています。
注:それらが方向である場合、つまり、pt1-pt2が平面ルートまたは何かを表す場合、代わりにLine
を使用します。
も参照してください、