我们写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
|
参见:Microsoft SQL ISV Program Management Team
posted @ 2006-05-31 10:49
TerryLee 阅读(1339)
评论(1) 编辑 收藏 网摘 所属分类:
[21] 数据库相关