boiled_iron

coding,sql,accounting,hospital,paper,picturing

导航

NOT IN 后面如果出现了 NULL

如果NOT IN操作后的列表中的任何项目求值为null,则所有行的求值为FALSEUNKNOWN,并且不返回任何行。例如,以下语句True为每一行返回字符串“ ”:

从员工中选择“真”
   WHERE department_id NOT IN(10,20);

但是,以下语句不返回任何行:

从员工中选择“真”
    WHERE department_id NOT IN(10,20,NULL); 

前面的示例不返回任何行,因为WHERE子句条件的计算结果为:

department_id!= 10 AND department_id!= 20 AND department_id!=空 

由于第三个条件department_id与null进行比较,因此结果为UNKNOWN,因此将得出整个表达式FALSE(对于department_id等于10或20的行)这种行为很容易被忽略,尤其是当NOT IN操作员引用一个子查询时

 

posted on 2021-01-26 22:53  boiled_iron  阅读(238)  评论(0编辑  收藏  举报