1. ホーム
  2. sql

[解決済み】変数を割り当てるとき、SETとSELECTの違いは?

2022-03-28 19:15:49

質問

の違いは何ですか? SETSELECT ステートメントを使用して、T-SQLで変数を代入することはできますか?

どのように解決するのですか?

引用 を要約したものです。 この記事 :

  1. SETは変数割り当てのANSI標準ですが、SELECTはそうではありません。
  2. SETは一度に1つの変数しか代入できませんが、SELECTは一度に複数の代入が可能です。
  3. クエリから代入する場合、SET はスカラー値のみを代入することができます。クエリが複数の値や行を返した場合、SET はエラーを発生させます。SELECTは値の1つを変数に代入し、複数の値が返されたことを隠します(そのため、他の場所で何かがうまくいかない理由を知ることができない可能性があります - トラブルシューティングを楽しんでください)。
  4. クエリから代入する際、返された値がない場合、SETはNULLを代入し、SELECTは代入を全く行いません(したがって、変数は以前の値から変更されません)。
  5. 速度の違いについては、SET と SELECT の間に直接的な違いはありません。しかし、SELECT は一度に複数の代入を行うことができるため、SET に対して若干の速度的な優位性を持っています。