首页 > 数据库 >SQL Server中NULL的一个测试

SQL Server中NULL的一个测试

时间:2023-10-25 23:11:48浏览次数:42  
标签:返回 False Server 关键字 SQL NULL SELECT

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

输出结果:

 

     

标签:返回,False,Server,关键字,SQL,NULL,SELECT
From: https://www.cnblogs.com/sexintercourse/p/17788366.html

相关文章

  • maven创建普通java项目访问mysql-仅jdbc
    已知:1、maven对普通Java项目的创建,参考 https://www.cnblogs.com/wanjinliu/p/17706089.html 。2、java常规访问mysql数据库,需要用到jdbc驱动。调用的jar包,最新为“mysql-connector-j”--这个名字可以不记得,看见能认识它就行。包、类入门用法,参考 https://www.cnblogs.com/......
  • mysql的regex匹配多个字符串且不包含子串
     mysql的regex匹配多个字符串且不包含子串,regex使用、mysqlregex使用、mysqlregex详解、regex的高级使用 camera_label字段是以逗号分割的字符串 1.查询包含 camera_2标签的数据select*fromdevice_info_datawherescope_type=2andcamera_labelREGEXP('came......
  • KubeSphere v3.4.0 创建Mysql 8.1.0 数据库主从记录
    主要讲下KubeSphere中创建【有状态】的【工作负载】需要注意的配置问题。这里的创建过程也不详细描述,网上简单找一找也有。重点在使用存储里面的配置字典:1、先创建一个配置字典,参考名:mysql-config2、创建一主一从的配置项,键(主库):master-1.cnf值(主库):[mysqld]port......
  • pyspark.sql处理多分隔符数据文件生成DF案例
    pyspark程序清洗多分隔符数据案例原始数据可以看到原始数据是以“|#$”多分隔符进行数据分割的POD9_6ec8794bd3297048d6ef7b6dff7b8be1|#$2023-10-24|#$0833|#$#|#$#|#$99999999999|#$#|#$12345678912POD9_352858578708f144bb166a77bad743f4|#$2023-10-24|#$0391|#$#|#$#|#$99......
  • windows安装MySQL8.0.20
    一、下载地址(zip版):https://downloads.mysql.com/archives/community/二、安装mysql8.0.201、解压缩至目录D:\software\mysql-8.0.20-winx642、新建my.ini文件在D:\software\mysql-8.0.20-winx64目录下新建my.ini文件注意:需要将配置文件中的basedir和datadir的值改成自己......
  • sql高级实践
    sql高级实践情景还原:在企业中心中,开通岗位风控的企业一共有13个,要在数据大屏中统计这13个企业的单元,事件,管控措施,任务数。难点解析:device表,risk_unit表,risk_event表,risk_measure只有device表有company_id。重点在于13个企业不是每个企业都有从装置往下的一个完整的数数据树的......
  • 如果 jumpserver 堡垒机中连不上之前保存能连接的服务器了怎么办
    如果这期间曾经修改过密码,请删除该服务器主机已关联的用户信息,重新添加用户,里面的用户凭据不会通过用户自动同步另外如果主机有其它安全服务保护,请注意是否因为堡垒机尝试错误次数过多导致ip被封,需要手动解封ip!参考:https://blog.csdn.net/weixin_42672685/article/details/11......
  • sql 审核工具 archery
    这里使用git下载gitclonehttps://gitee.com/rtttte/Archery.git使用docker-compose进行部署cdArchery/src/docker-compose执行部署命令docker-compose-fdocker-compose.ymlup-d初始化操作#表结构初始化dockerexec-tiarchery/bin/bashcd/opt/arche......
  • 多款国产操作系统安装数据库干货文档汇总(含Oracle/MySQL/国产数据库等)
    随着国产化的逐步推进,越来越多的企业选择将数据库安装在国产操作系统上。为帮助大家了解国产操作系统上的数据库成功搭建案例与搭建方式,本文整理了墨天轮数据技术社区上用户分享的实操文档,涵盖银河麒麟、中标麒麟、统信UOS、openEuler等常见的国产操作系统,数据库以Oracle为主,此外......
  • MySQL
    MySQL概述MySQL连接语法mysql -u用户名 -p密码[-h数据库服务器IP地址 -p端口号]关系型数据库:(RDBMS)建立在关系模型基础上,由多张相互连接的二维表组成的数据库特点:使用表存储数据,格式统一,便于维护使用SQL语言操作,标准统一,使用方便,可以用于复杂......