除is [not] null之外,空值不满足任何查找条件。
–如果null参与算术运算,则该算术表达式的值为null。
–如果null参与比较运算,则结果可视为false。在SQL-92中可看成unknown。
–如果null参与聚集运算,则除count(*)之外其它聚集函数都忽略null。
   例:select    sum(SAL)
           from     PROF
   例:select    count(*)
           from     PROF

详细分析

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并不违反。

和NULL值相关的两个函数

NULLIF:需要两个参数

例子:NULLIF(a,b)
说明:如果a和b是相等的,那么返回NULL,如果不相等返回a
select NULLIF('eqeqweqwe','1') 结果是eqeqweqwe
select NULLIF(1,1) 结果是NULL
a和b的类型要一致

ISNULL:需要两个参数

例子:ISNULL(a,b)
说明:如果a和b同时为NULL,返回NULL,如果a为NULL,b不为NULL,返回b,如果a不为NULL,b为NULL返回a,如果a和b都不为NULL

返回a
select ISNULL(null,null)结果是null
select ISNULL(null,33)结果是33
select ISNULL('ddd',null)结果是ddd
select ISNULL(44,33)结果是44

转载自:http://blog.sina.com.cn/s/blog_6a6eb42d0100ka56.html

SQL中的NULL值的更多相关文章

  1. sql 中的null值

    1.包含null的表达式都为空 select salary*12+nvl(bonus,0) nvl是虑空函数 2. null值永远!=null select  * from emp  where bo ...

  2. SQL中的Null深入研究分析

    SQL中的Null深入研究分析 虽然熟练掌握SQL的人对于Null不会有什么疑问,但总结得很全的文章还是很难找,看到一篇英文版的, 感觉还不错. Tony Hoare 在1965年发明了 null 引 ...

  3. 深入详解SQL中的Null

    深入详解SQL中的Null NULL 在计算机和编程世界中表示的是未知,不确定.虽然中文翻译为 “空”, 但此空(null)非彼空(empty). Null表示的是一种未知状态,未来状态,比如小明兜里 ...

  4. 深入具体解释SQL中的Null

    NULL 在计算机和编程世界中表示的是未知,不确定.尽管中文翻译为 "空", 但此空(null)非彼空(empty). Null表示的是一种未知状态.未来状态,比方小明兜里有多少钱 ...

  5. 数据库 SQL :有关 NULL 值引发 TRUE、FALSE、UNKNOW 三值逻辑

    在 Java.C# 中,相信如果是 boolean 类型值,只有两种选择 true.false.然而,在 SQL 查询中,NULL 值的引入,使得新增了 UNKNOW ,因此,就产生了 TRUE.FA ...

  6. (转) SQL 中的 NULL 你真的懂了吗?【数据库|SQL】

    注:转载自下面链接 https://blog.csdn.net/lnotime/article/details/104847946 SQL 中的 NULL (译自 NULL Values in SQL ...

  7. java中,null值可以被强制转换为任何类型

    java中,null值可以被强制转换为任何类型

  8. 参数中传Null值

    参数中传Null值虽然不是一种优雅的方式,但有时候可以省时间.不过不推荐.

  9. SqlServer中的Null值空值问题

    sql使用的是三值谓词逻辑,所以逻辑表达式返回的结果可以为True.False或者未知,在三值逻辑中返回True与不返回False并不完全一样, SQL对查询过滤条件的处理:接受TURE  拒绝FAL ...

随机推荐

  1. 怎么让自己的java系统使用支付接口

    昨天花了好久的时间学习了支付接口的教,我看了前7集,就够用了,大家上网搜索一下传智播客在线支付还不错. 1.一开始有一个form表单 2.这个表单是他帮你写好的,有很多银行,银行的name都是特定的 ...

  2. MVC中javascript直接调用Model

    最近做一个统计页面, Model从后台已经获取了数据集合,想直接在前台展示,而这个展示是需要用js生成图表的. 控制器部分代码: public ActionResult Index() { var m ...

  3. "库未注册"(Library not registered)异常.

    启发链接:http://social.msdn.microsoft.com/Forums/vstudio/en-US/f25b80bc-ecd4-4c37-8be3-9106a765b072/libr ...

  4. 分离数据库(Detach database).

    Many times, we often needs to detach our databases if we want to copy it to another database instanc ...

  5. google的西联汇款可以使用工行代收

  6. ASP.NET 导入EXCEL文档

    鉴于教务一般都是手动输入学生信息,在未了解本校数据库的客观情况之下,我们准备设计一个导入excel文档中学生信息如数据库的功能.结合网上各类大牛的综合版本出炉.. 首先具体的实现思想如下: 1.先使用 ...

  7. corejava_chap02

    //单行注释  --不能用在一行代码的中间/**/多行注释 --任何地方/** */文档注释  文档注释用在:package.class.member variables.member method. ...

  8. 【转】ASP.NET MVC 入门教程列表

    ASP.NET MVC小论 2008-12-04 11:11 by T2噬菌体, 8052 visits, 网摘, 收藏, 编辑 摘要:ASP.NET MVC作为微软官方的.NET平台下MVC解决方案 ...

  9. SGU 103.Traffic Lights(最短路)

    时间: 0.50 second(s) 空间: 4096 kilobytes 输入: 标准输入 输出: 标准输出 Dingiville 城市的交通规则非常奇怪,城市公路通过路口相连,两个不同路口之间最多 ...

  10. CentOS7下安装配置vncserver

    之前试了xmanager,不过好像和在centos6有很大不同,居然没成功,然后找到了vncserver,试了下,成了 参考:http://blog.csdn.net/jiangliqing1234/ ...