博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转载)SQL中的NULL值
阅读量:5015 次
发布时间:2019-06-12

本文共 1565 字,大约阅读时间需要 5 分钟。

SQL中的NULL值,表示不知道(UNKNOWN)的数据,用作不知道数据的具体值,或者不知道数据是否存在,或者数据不存在等情况。因为引入了NULL值,故此SQL的逻辑系统是三值逻辑系统——FALSE、TRUE、NULL三种值构成的逻辑系统。
1、OR、AND、NOT真值表
A B A OR B A AND B NOT A
FALSE FALSE FALSE FALSE TRUE
FALSE TRUE TRUE FALSE -
FALSE NULL NULL FALSE -
TRUE FALSE TRUE FALSE FALSE
TRUE TRUE TRUE TRUE -
TRUE NULL TRUE NULL -
NULL FALSE NULL FALSE NULL
NULL TRUE TRUE NULL -
NULL NULL NULL NULL -

  因为NULL当UNKNOWN来理解,因此,当值为NULL时,它既有可能是FALSE也有可能是TRUE。如果计算结果只有一种可能,则取该种可能;如果计算结果既有可能是FALSE,也有可能是TRUE,那么结果便为NULL。例如,NOT NULL,其结果也有两种可能,因此NOT NULL的结果是NULL。再例如,NULL AND TRUE,则其结果也有两种可能,因此NULL AND TRUE的结果是NULL。但是,NULL OR TRUE,或是NULL AND FALSE,前者结果为TRUE,单是一个TRUE出现,便足以知道结果为TRUE;后者结果为FALSE,单是一个FALSE出现,便足以知道结果为FALSE。这是OR和AND的特性决定的。
2、比较运算符及算术运算符中的NULL
  比较运算符及算术运算符中的NULL,会导致运算结果也为NULL。如3+NULL的结果为NULL,NULL>=5的结果为NULL,等等。
3、BETWEEN AND、IN中的NULL
  A BETWEEN B AND C意为A>=B AND A<=C,因此其产生NULL值的情况,可以参照后者判断。A NOT BETWEEN B AND C相应等价于NOT(A>=B AND A<=C)。
  A IN(B,C,D)意为A=B OR A=C OR A=D,因此其产生NULL值的情况,可以参照后者判断。A NOT IN(B,C,D)相应等价于NOT(A=B OR A=C OR A=D)。当集合为空时,IN的结果为FALSE,NOT IN的结果则为TRUE。
4、EXISTS、IS NULL
  EXISTS(以及NOT EXISTS)、IS NULL(以及IS NOT NULL),均只产生FALSE或TRUE,而不产生NULL。
5、ANY、ALL
  在一个值与一个集合(一组值)比较时,比较运算符可以加上ANY(或SOME,作用相同)或ALL。
  A>ANY(B,C,D)意为A>B OR A>C OR A>D,因此其产生NULL值的情况,可以参照后者判断。当集合为空时,ANY的结果为FALSE。
  A>ALL(B,C,D)意为A>B AND A>C AND A>D,因此其产生NULL值的情况,可以参照后者判断。当集合为空时,ALL的结果为TRUE。
6、WHERE、HAVING、ON条件筛选,与完整性约束检查
  在WHERE、HAVING、ON条件筛选中,只保留结果为TRUE的,而不处理FALSE及NULL的。但在完整性约束检查中,只有结果为FALSE的,才违反约束检查,NULL并不违反。

 

以上文章转载自

转载于:https://www.cnblogs.com/apollohan/archive/2009/02/23/1396174.html

你可能感兴趣的文章
WCF:如何将net.tcp协议寄宿到IIS
查看>>
WebAPI HelpPage支持area
查看>>
Path元素
查看>>
php_soap扩展应用
查看>>
第二百三十一节,Bootstrap 介绍
查看>>
vi/vim 三种模式的操作
查看>>
JAVA面向对象三大特性总结
查看>>
guid
查看>>
Python中出现“TabError: inconsistent use of tabs and spaces in indentation”问题的解决
查看>>
ajax请求
查看>>
js学习总结----DOM增删改和应用
查看>>
希尔伯特矩阵(Hilbert matrix)
查看>>
(20)sopel算法
查看>>
学习总结 javascript 闭包
查看>>
实验吧一个小坑注入
查看>>
【 D3.js 高级系列 — 8.0 】 打标
查看>>
Mac必备软件推荐
查看>>
Android Gson深入分析
查看>>
display:flow-root
查看>>
判读字符串是否为空的全局宏-分享
查看>>