gdjlc

培养良好的习惯,每天一点一滴的进步,终将会有收获。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

在SQL中谓词(逻辑表达式)的可能取值有TRUE、FALSE和UNKNOWN,这就是所谓的三值逻辑。

UNKNOWN逻辑通常出现在涉及NULL值的逻辑表达式中,NULL代表一种缺失的值,当把一个缺失的值和另一个值(这个值也可能是NULL)进行比较时,逻辑结果总是UNKNOWN。

查询筛选器(ON WHERE HAVING)都把UNKNOWN当作FALSE处理,使筛选器取值为UNKNOWN的行会被排除在结果集之外。而 CHECK结束中的UNKNOWN被当作FALSE对待,如表中一个CHECK结束要求某列大于0,向该列插入NULL值也会成功,因为 NULL>0等于UNKNOWN。

在筛选器中比较两个NULL值将得到UNKNOWN,而在UNIQUE结束、集合运算(如UNION和EXCEPT)、排序和分组操作中,认为两个NULL值相等:
1,如果表中一列定义了UNIQE 约束,将无法向表中插入两行NULL值。
2,GROUP BY子句会将所有NULL分到一组。
3,ORDER BY子句会将所有NULL排列在一起。
4,当比较两个集合中的行时,集合运算符认为两个NULL值相等。

posted on 2012-03-01 23:22  gdjlc  阅读(271)  评论(0编辑  收藏  举报