web-dev-qa-db-ja.com

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「@座標」付近の構文が正しくありません。

選択クエリの結果:

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:)

1
Gour Gopal

これを使用してください:

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

注意:

  1. NOT NULLビヘイビアーで4列を作成しましたが、挿入するのは2列のみです。エラーを返します。

  2. INSERT INTOの代わりにSELECT INTOを使用してください。テーブルはすでに作成されています。

  3. DECLAREテーブルを呼び出すときにSELECT..FROMを使用します。
10

これらは空間座標なので、 空間地理ポイント で保存する必要があります

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を使用します。

も参照してください、

5
Evan Carroll