演算子の優先順位 (Transact-SQL)

複合式に複数の演算子がある場合は、演算子の優先順位によって、操作の実行順序が決まります。実行順序は、結果値に大きく影響します。

演算子には、次の表に示す優先順位レベルが定義されています。優先順位が高い演算子は、優先順位が低い演算子よりも前に評価されます。

レベル

演算子

1

~ (ビットごとの NOT)

2

* (乗算)、/ (除算)、% (剰余)

3

+ (正号)、- (負号)、+ (加算)、(+ 連結)、- (減算)、& (ビットごとの AND)、^ (ビットごとの排他的 OR)、| (ビットごとの OR)

4

=, >, <, >=, <=, <>, !=, !>, !< (比較演算子)

5

NOT

6

AND

7

ALL、ANY、BETWEEN、IN、LIKE、OR、SOME

8

= (代入)

式の中の 2 つの演算子が同じ優先順位レベルの場合は、式の中での位置に従って演算子は左から右へと評価されます。たとえば、次の SET ステートメントで使用される式では、減算演算子が加算演算子よりも前に評価されます。

DECLARE @MyNumber int
SET @MyNumber = 4 - 2 + 27
-- Evaluates to 2 + 27 which yields an expression result of 29.
SELECT @MyNumber

式の中で演算子の定義済みの優先順位を無効にするには、かっこを使用します。この場合、かっこ内のすべての演算が評価され、1 つの値が作成されてから、かっこ外の演算子でこの値が使用されます。

たとえば、次の SET ステートメントで使用される式では、乗算演算子の優先順位は加算演算子よりも高くなります。したがって、乗算演算子が先に評価され、式の結果は 13 になります。

DECLARE @MyNumber int
SET @MyNumber = 2 * 4 + 5
-- Evaluates to 8 + 5 which yields an expression result of 13.
SELECT @MyNumber

次の SET ステートメントで使用される式では、かっこにより、加算が先に実行されます。式の結果は 18 になります。

DECLARE @MyNumber int
SET @MyNumber = 2 * (4 + 5)
-- Evaluates to 2 * 9 which yields an expression result of 18.
SELECT @MyNumber

式の中でかっこが入れ子になっている場合は、最も深い入れ子になった式が先に評価されます。次の例ではかっこが入れ子になっており、かっこで囲まれている 5 - 3 という式が最も深い入れ子になっています。この式の結果は 2 になります。次に、加算演算子 (+) によって、この結果に 4 が加算されます。ここでの結果は 6 になります。最後に 6 に 2 が乗算され、式の最終的な結果は 12 になります。

DECLARE @MyNumber int
SET @MyNumber = 2 * (4 + (5 - 3) )
-- Evaluates to 2 * (4 + 2) which then evaluates to 2 * 6, and 
-- yields an expression result of 12.
SELECT @MyNumber