SQL语句中布尔表达式不可忽视的部分

写SQL语句时,布尔表达式中的第三个值UNKNOWN往往被我们所忽视,但是这其实是很关键的,下文将带您做一个测试,说明这个问题。

我们写SQL语句有时,总是希望SQL表达式能够返回TRUE或者FALSE,却常常忽略了第三个值UNKNOWN。由于不注意判断返回的值有时会导致错误的结果, UNKNOWN与TRUE和FALSE做AND、OR运算返回的结果有一些差异。

来看一个小小的测试:

1
.AND操作

AND TRUE FALSE UNK
TRUE      
FALSE      
UNK      

2
.OR操作

OR TRUE FALSE UNK
TRUE      
FALSE      
UNK      

如果你已经有了答案,不妨跟微软工程师们给出的答案对照一下吧:

AND TRUE FALSE UNK
TRUE TRUE     FALSE UNK
FALSE FALSE  FALSE FALSE
UNK UNK  FALSE UNK

OR TRUE FALSE UNK
TRUE TRUE TRUE TRUE
FALSE TRUE FALSE UNK
UNK TRUE UNK UNK

 

【编辑推荐】

自动生成INSERT语句的SQL存储过程

SQL语句中的SELECT DISTINCT

教您用事务一次处理多条SQL语句

通过执行多条SQL语句实现数据库事务

存储过程优化的SQL语句写法

THE END