逻辑运算符

逻辑运算符

运算符说明示例
AND如果两个值都为真,则为真。a AND b
OR如果其中一个值为真,则为真。a OR b
NOT如果值为假,则为真。NOT a

NULL对逻辑运算符的影响

如果表达式的一侧或两侧为NULL,则AND比较的结果可能是NULL。如果AND运算符至少一侧为FALSE,则表达式的计算结果为FALSE

  1. SELECT CAST(null AS boolean) AND true; -- null
  2. SELECT CAST(null AS boolean) AND false; -- false
  3. SELECT CAST(null AS boolean) AND CAST(null AS boolean); -- null

如果表达式的一侧或两侧为NULL,则OR比较的结果可能是NULL。如果OR运算符至少一侧为TRUE,则表达式的计算结果为TRUE

  1. SELECT CAST(null AS boolean) OR CAST(null AS boolean); -- null
  2. SELECT CAST(null AS boolean) OR false; -- null
  3. SELECT CAST(null AS boolean) OR true; -- true

下面的真值表展示了如何处理ANDOR中的NULL

aba AND ba OR b
TRUETRUETRUETRUE
TRUEFALSEFALSETRUE
TRUENULLNULLTRUE
FALSETRUEFALSETRUE
FALSEFALSEFALSEFALSE
FALSENULLFALSENULL
NULLTRUENULLTRUE
NULLFALSEFALSENULL
NULLNULLNULLNULL

NULL的逻辑补运算结果为NULL,如以下示例所示:

  1. SELECT NOT CAST(null AS boolean); -- null

下面的真值表展示了如何处理NOT中的NULL

aNOT a
TRUEFALSE
FALSETRUE
NULLNULL