• SQL Server中NULL的一个测试


    我们都知道SQL Server中NULL是一个很特殊的存在,因为NULL不会等于任何值,且NULL也不会不等于任何值。对于NULL我们只能使用IS或IS NOT关键字来进行比较。

    我们先来看看下面一个SQL查询,由于NULL不会等于任何值,所以毫无疑问下面的查询会返回0:

    SELECT CASE WHEN NULL=1 THEN 1 ELSE 0 END

    输出结果:

    那么如果我们在上面查询的基础上,给判断条件NULL=1前加上NOT关键字效果如何呢?如下所示:

    SELECT CASE WHEN NOT NULL=1 THEN 1 ELSE 0 END

    输出结果:

    我们可以看到输出还是0,有些同学可能会觉得很奇怪,判断条件NULL=1不是返回False吗,那么NOT NULL=1应该返回True才对啊?那么我们试试在判断条件NULL=1前加两个NOT关键字试试:

    SELECT CASE WHEN NOT NOT NULL=1 THEN 1 ELSE 0 END

    输出结果:

    结果显示判断条件NOT NOT NULL=1,还是返回的False,事实上无论我们在NULL=1前面加多少个NOT关键字,判断条件NOT ... NOT NULL=1都会返回False。

    因为我们前面说了NULL不会等于任何值,且NULL也不会不等于任何值,所以除了用IS或IS NOT关键字来比较NULL,所有其它比较运算符对NULL进行的比较都是无效的,NULL会让整个表达式都返回False,所以无论我们在判断条件NULL=1前面加多少个NOT关键字都没有用,因为整个NOT ... NOT NULL=1表达式都会返回False。

    虽然上面我们看到NULL会让整个判断表达式都返回False,但是它并不会干扰由OR或AND关键字分隔的其它判断条件,例如:

    SELECT CASE WHEN (NOT NOT NULL=1) OR (1=1 AND 2=2) THEN 1 ELSE 0 END

    输出结果:

  • 相关阅读:
    理解盒子模型
    Jackson 框架,轻易转换JSON
    JAVA仿百度分页
    最干净,最便捷的卸载Mysql
    Mysql 6.0安装过程(截图放不上去)
    开发JSP自定义标签
    JAVA实现文件上传
    开发过程中常用工具类
    JQUERY 简单易用的提示框插件
    什么是Bash Shell的内建(build in)命令
  • 原文地址:https://www.cnblogs.com/OpenCoder/p/10706879.html
Copyright © 2020-2023  润新知