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


  本文标签: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