我们都知道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

输出结果:

SQL Server中NULL的一个测试的更多相关文章

  1. sql server中NULL导入decimal字段时报错

    sql server中NULL导入decimal字段时报错 在导入CSV文件时,如果decimal字段为null值,导致文本文件入库时失败. 错误现象 构造例子 新建一张表,包含decimal字段. ...

  2. SQL Server 中怎么查看一个字母的ascii编码或者Unicode编码

    参考文章:微信公众号文章 在sql中怎么查看一个字符的ascii编码,so easy !! select ASCII('a') SELECT CHAR(97) charNum SELECT UNICO ...

  3. SQL Server 中怎么查看一个字母的ascii编码或者Unicode编码(转载)

    在sql中怎么查看一个字符的ascii编码或Unicode编码: SELECT ASCII('a') AS [AsciiNum]--字符获取ASCII码 SELECT UNICODE(N'a') AS ...

  4. 在sql server中如何检测一个字符串中是否包含另一个字符串

    select CHARINDEX('456','123456')   SQL语句使用CHARINDEX函数,来测试一个字符串中是否包含另一个字符串中的方法: 一.CHARINDEX函数介绍 1.函数功 ...

  5. 在SQL SERVER中实现RSA加解密函数(第一版)

    /*************************************************** 作者:herowang(让你望见影子的墙) 日期:2010.1.1 注:   转载请保留此信息 ...

  6. VBS将本地的Excel数据导入到SQL Server中

    VBS将本地的Excel数据导入到SQL Server中 高文龙关注0人评论1170人阅读2017-05-14 12:54:44 VBS将本地的Excel数据导入到SQL Server中 最近有个测试 ...

  7. Microsoft SQL Server中的事务与并发详解

    本篇索引: 1.事务 2.锁定和阻塞 3.隔离级别 4.死锁 一.事务 1.1 事务的概念 事务是作为单个工作单元而执行的一系列操作,比如查询和修改数据等. 事务是数据库并发控制的基本单位,一条或者一 ...

  8. 【转】T-SQL查询进阶—理解SQL Server中的锁

      简介 在SQL Server中,每一个查询都会找到最短路径实现自己的目标.如果数据库只接受一个连接一次只执行一个查询.那么查询当然是要多快好省的完成工作.但对于大多数数据库来说是需要同时处理多个查 ...

  9. SQL Server中的锁的简单学习

    简介 在SQL Server中,每一个查询都会找到最短路径实现自己的目标.如果数据库只接受一个连接一次只执行一个查询.那么查询当然是要多快好省的完成工作.但对于大多数数据库来说是需要同时处理多个查询的 ...

随机推荐

  1. LeetCode专题-Python实现之第27题:Remove Element

    导航页-LeetCode专题-Python实现 相关代码已经上传到github:https://github.com/exploitht/leetcode-python 文中代码为了不动官网提供的初始 ...

  2. PC逆向之代码还原技术,第二讲寻找程序入口点

    PC逆向之代码还原技术,第二讲寻找程序入口点 一丶简介 程序逆向的时候.我们需要知道程序入口点.动态分析的时候以便于看是什么程序编写的. 比如VC++6.0 我们可以写一个程序测试一下 我们写一段代码 ...

  3. 爬虫入门(三)——动态网页爬取:爬取pexel上的图片

    Pexel上有大量精美的图片,没事总想看看有什么好看的自己保存到电脑里可能会很有用 但是一个一个保存当然太麻烦了 所以不如我们写个爬虫吧(๑•̀ㅂ•́)و✧ 一开始学习爬虫的时候希望爬取pexel上的 ...

  4. Select默认选择后台参数

    之前写过一个这样的方法,后来需求开发中,发现了方法的BUG,然后我又重新找了一种方法,今天来记录一下. 先声明前台 <select name="type" class=&qu ...

  5. [java]final关键字的几种用法

    在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下final ...

  6. redis分布式锁工具类

    目录 (1)需要导入的包 (2)JedisUtil类 (3)jedisPool配置 (4)使用举例 (1)需要导入的包 <dependency> <groupId>redis. ...

  7. 生产者消费者C++实现

    #include<string>#include<iostream>#include<process.h>#include<windows.h>#inc ...

  8. 面试题之(HTTP协议)【转】

    转自:http://www.cnblogs.com/ranyonsue/p/5984001.html HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协 ...

  9. PHP实现微信随机红包算法和微信红包的架构设计简介

    微信红包的架构设计简介: 原文:https://www.zybuluo.com/yulin718/note/93148 @来源于QCon某高可用架构群整理,整理朱玉华. 背景:有某个朋友在朋友圈咨询微 ...

  10. Dynamics CRM日期字段查询使用时分秒的方法

    本人微信公众号:微软动态CRM专家罗勇 ,回复293或者20190110可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 我们 ...