逻辑运算符

运算符 描述 示例
AND 当运算符 AND 两边的表达式的结果都为 true 时,整个运算结果才为 true,否则,只要有一方为 false,则结果为 false。 a AND b
OR 当运算符 OR 两边的表达式的结果只要有一个为 true 时,整个运算结果为 true;两边的表达式的结果均为 false,则结果为 false。 a OR b
NOT 如果布尔值为 false 返回 true;如果布尔值为 true 返回 false。 NOT a

NULL 值对逻辑运算符的影响

如果表达式的一边或两边是 NULL,那么 AND 运算符的结果可能是 NULL。如果 AND 运算符至少有一边是 FALSE,那么表达式的结果为 FALSE

1
2
3
4
5
SELECT CAST(null AS boolean) AND true; -- null

SELECT CAST(null AS boolean) AND false; -- false

SELECT CAST(null AS boolean) AND CAST(null AS boolean); -- null

如果表达式的一边或两边是 NULL,那么 OR 运算符较的结果可能是 NULL。如果一个 OR 运算符的至少一边是 TRUE,那么表达式的结果为 TRUE

1
2
3
4
5
SELECT CAST(null AS boolean) OR CAST(null AS boolean); -- null

SELECT CAST(null AS boolean) OR false; -- null

SELECT CAST(null AS boolean) OR true; -- true

下面的真值表展示了在 ANDOR 中对 NULL 的处理:

a b a AND b a OR b
TRUE TRUE TRUE TRUE
TRUE FALSE FALSE TRUE
TRUE NULL NULL TRUE
FALSE TRUE FALSE TRUE
FALSE FALSE FALSE FALSE
FALSE NULL FALSE NULL
NULL TRUE NULL TRUE
NULL FALSE FALSE NULL
NULL NULL NULL NULL

如下面的例子所示,NULL 的逻辑非是 NULL

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

下面的真值表演示了 NOT 中对 NULL 的处理:

a NOT a
TRUE FALSE
FALSE TRUE
NULL NULL

(END)