SQLロジック演算子の優先順位: AndとOr 質問する

SQLロジック演算子の優先順位: AndとOr 質問する

以下の 2 つのステートメントは同等ですか?

SELECT [...]
FROM [...]
WHERE some_col in (1,2,3,4,5) AND some_other_expr

そして

SELECT [...]
FROM [...]
WHERE some_col in (1,2,3) or some_col in (4,5) AND some_other_expr

これを検証するために使用できる何らかの真理値表はありますか?

ベストアンサー1

Andは よりも優先されるOrため、たとえa <=> a1 Or a2

Where a And b 

は同じではありません

Where a1 Or a2 And b,

それは次のように実行されるからです

Where a1 Or (a2 And b)

これらを同じにするには、次のようになります (優先順位のルールを無効にするために括弧を使用します)。

 Where (a1 Or a2) And b

以下に例を挙げて説明します。

Declare @x tinyInt = 1
Declare @y tinyInt = 0
Declare @z tinyInt = 0

Select Case When @x=1 OR @y=1 And @z=1 Then 'T' Else 'F' End -- outputs T
Select Case When (@x=1 OR @y=1) And @z=1 Then 'T' Else 'F' End -- outputs F

参考文献を参照したい人向け(アルファベット順):

おすすめ記事