SQLをTeradataからSQL Serverに変換しています
teradataでは、フォーマットが
SELECT col1, col2
FROM table1
INTO @variable1, @variable2
SQL Serverで、私は見つけました
SET @variable1 = (
SELECT col1
FROM table1
);
ステートメントごとに1つの列/変数のみが許可されます。単一のSELECTステートメントを使用して2つ以上の変数を割り当てる方法
SELECT @variable1 = col1, @variable2 = col2
FROM table1
SELECT @var = col1,
@var2 = col2
FROM Table
SET/SELECTに関する興味深い情報を次に示します
- SETは変数割り当てのANSI標準ですが、SELECTはそうではありません。
- SETは一度に1つの変数のみを割り当てることができ、SELECTは一度に複数の割り当てを行うことができます。
- クエリから割り当てる場合、SETはスカラー値のみを割り当てることができます。クエリが複数の値/行を返す場合、SETはエラーを発生させます。 SELECTは値の1つを変数に割り当て、複数の値が返されたという事実を隠します(そのため、他の場所で何かがうまくいかなかった理由がわからないでしょう。その1つをトラブルシューティングしてください)
- クエリから割り当てるときに値が返されない場合、SETはNULLを割り当てます。SELECTは割り当てをまったく行いません(したがって、変数は前の値から変更されません)。
- 速度の違いに関する限り、SETとSELECTの間に直接的な違いはありません。ただし、1回のショットで複数の割り当てを行うSELECTの機能により、SETよりも速度が若干向上します。