写SQL语句时,布尔表达式中的第三个值UNKNOWN往往被我们所忽视,但是这其实是很关键的,下文将带您做一个测试,说明这个问题。
我们写SQL语句有时,总是希望SQL表达式能够返回TRUE或者FALSE,却常常忽略了第三个值UNKNOWN。由于不注意判断返回的值有时会导致错误的结果, UNKNOWN与TRUE和FALSE做AND、OR运算返回的结果有一些差异。
来看一个小小的测试:
1.AND操作| AND | TRUE | FALSE | UNK |
| TRUE | |||
| FALSE | |||
| UNK |
| 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 |

