sql中的!=操作符的天坑(务必警觉)(=在处理null时也是同样有坑)

news2024/11/24 10:44:11

最近在测试数据,偶尔需要写sql进行数据比对,例如这样的语句:
if( column_a != column_b, 1, 0),万万没想到就是这样的sql语句差点要了我的命。
其实对一般的数据,这条校验语句是没有问题的,最后再筛选一下=1的值,就可以把不一样的数据给筛出来了,但是,但是,但是,在遇到null值的时候出现问题了,在我的常识的理解中,或者在我对其他编程语言的理解中,if(null != “xxxx”, 1, 0) 应该是返回1的,但是sql中就是这么奇怪。
关键是有时候我们忽略了这一点,尤其是两个表join之后,字段之间的比较,你很难意识到有些字段有null,null值不能参与equal比较。

This is by design. NULL is not equal (or unequal) to anything.

You can’t use the not equal to operator to compare against NULL. Actually, this may depend on your DBMS and its configuration.

In SQL null is not equal (=) to anything—not even to another null. According to the three-valued logic of SQL, the result of null = null is not true but unknown. SQL has the is [not] null predicate to test if a particular value is null.

https://modern-sql.com/feature/is-distinct-from#:~:text=In%20SQL%20null%20is%20not%20equal%20%28%20%3D%29,that%20treats%20two%20null%20values%20as%20the%20same.

通俗来讲,就是当你使用不等于进行筛选的时候,一定要注意,因为null不会被筛选出来,这样可能和你所期望的结果大相径庭。

<=> 这个操作符好像是一种解决方法,对于非null值,其表现和=是一样的,对于null值,null <=> null返回True, 如果只有一个只为null就返回False。
Returns same result with EQUAL(=) operator for non-null operands, but returns TRUE if both are NULL, FALSE if one of the them is NULL. (As of version 0.9.0.)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/89637.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Stm32旧版库函数10——A4988 单个步进电机 16拍

#include "stm32f10x_lib.h" #include "motor.h" u8 Step; void GPIO_Key(void) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin GPIO_Pin_0|GPIO_Pin_1; // 选中管脚9 GPIO_InitStructure.GPIO_Mode …

使用java实现 分布式任务调度平台XXL-JOB 部署及使用

XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。 详细的特性和优点参考官网地址&#xff1a;https://www.xuxueli.com/xxl-job/ 一、任务调度 0.下载官方源…

为什么微服务一定要有网关呢

一、什么是服务网关 服务网关 路由转发 过滤器1、路由转发&#xff1a;接收一切外界请求&#xff0c;转发到后端的微服务上去&#xff1b; 2、过滤器&#xff1a;在服务网关中可以完成一系列的横切功能&#xff0c;例如权限校验、限流以及监控等&#xff0c;这些都可以通过…

Anaconda环境GDAL库基于whl文件的配置方法

本文介绍在Anaconda环境下&#xff0c;基于.whl文件安装Python中高级地理数据处理库GDAL的方法。 在文章Anaconda下Python中GDAL模块的下载与安装方法&#xff08;https://blog.csdn.net/zhebushibiaoshifu/article/details/124307748&#xff09;中&#xff0c;我们介绍了基于…

[附源码]计算机毕业设计的实验填报管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

我是如何使用docker安装nginx并配置https服务的

文章目录前言一、前期准备1、备案好的域名2、安装nginx2.1 下载nginx的docker镜像2.2 新建用于映射的目录2.3 从容器中拷贝nginx配置2.4 启动 nginx二、配置步骤1、申请免费的证书2、下载证书3、把证书上传至服务器4、配置 .conf 文件4.1 后端接口服务 api.conf 配置4.2 前端项…

数据智仓功能介绍(四)

字段设置 使用场景介绍 字段设置&#xff0c;即在数据智仓中&#xff0c;对输入上一数据处理节点的字段进行显示和隐藏、排序、重命名等操作。 操作配置 对数据类型的转换&#xff0c;主要用户复杂数据的处理的情况下 &#xff0c;例如某个字段是JSON &#xff0c;那么通过数…

用 JS 解析 excel 文件需要分几步

八月长江万里晴&#xff0c;千帆一道带风轻。 大家好&#xff0c;我是嘿嘿&#xff0c;今天来聊一聊如何使用 JS 来解析 excel 文件&#xff0c;当然不是直接使用 exceljs、sheetjs 之类的库&#xff0c;那就没意思了&#xff0c;而是主要说一下 JS 解析 excel 表格是如何实现的…

STM32F4 IAP 跳转 APP问题

1. 概念 IAP 的作用&#xff0c;网上其他资料已经有很多介绍了&#xff0c;这里放一个链接&#xff0c;不进行深入的介绍。本文的关注重点是Bootloader在跳转APP程序中出现的问题。 IAP的实现原理讲解以及中断向量表的偏移 2. 程序 本人主要做应用层的开发&#xff0c;所有Boo…

深蓝学院-多传感器融合定位课程-第7章-基于滤波的融合方法I

专栏文章: 深蓝学院-多传感器融合定位课程-第1章-概述_goldqiu的博客-CSDN博客 深蓝学院-多传感器融合定位课程-第2章-3D激光里程计I_goldqiu的博客-CSDN博客 深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_goldqiu的博客-CSDN博客 深蓝学院-多传感器融合定位课程-第…

自学100天,零基础转行软件测试,我要以更好的姿态奔赴下一场山海~

三年大专一场空 专业是电子商务&#xff0c;18年毕业&#xff0c;当时在报考时时觉得电子商务挺高大上的&#xff0c;觉得电商肯定会有前途&#xff0c;以后毕业肯定好找工作&#xff0c;跟大多数人一样&#xff0c;我开始幻想我以后毕业以后的纸醉金迷的生活&#xff0c;我以…

落地 DevOps,探索高效研发运营一体化解决方案

前言与概述 伴随着企业业务的快速发展&#xff0c;为了支撑业务发展&#xff0c;提高 IT 对业务的支撑能力建设。在研发工程协同方面&#xff0c;希望加强代码管理&#xff0c;实现持续构建、自动化测试、自动化部署、自动化运维&#xff0c;同时加强产品的安全和质量管理&…

华为路由器 静态路由

需求&#xff1a; 实现 PC1 与 PC2 互通 1、拓扑图 主机IP掩码网关PC1192.168.10.10255.255.255.0192.168.10.1PC2192.168.40.40255.255.255.0192.168.40.1PC3192.168.30.30255.255.255.0192.168.30.1 2、R1 路由器 <Huawei>undo ter mo Info: Current terminal monit…

c#调用c++捕获SEH异常

C代码&#xff1a; extern "C" __declspec(dllexport) int ExceptionTest() { int* pointer NULL;*pointer 100; return 100; }c#代码&#xff1a; class C_Sharp_Call_C__{[DllImport("testDll.dll", CallingConvention CallingConvention.Cdecl)]p…

SpringMVC:Spring与SpringMVC各自bean加载控制(2)

问题提出&#xff1a;学习Spring技术的时候在config目录下创建了一个配置类SpringConfig。现在学习SpringMVC技术在config目录下又创建一个SpringMvcConfig配置类。这两个配置类都需要加载资源&#xff0c;那么它们分别都需要加载哪些内容? 目录结构&#xff1a; config目录存…

[附源码]Python计算机毕业设计房屋租赁管理系统设计Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

完全可用的迁移docker目录方案(centos/redhat)

完全可用的迁移docker目录方一、前提二、具体操作如下&#xff1a;2.1 先模拟运行一个 docker mysql2.2 先停docker进程2.3 新建存储目录2.4 修改启动默认的目录2.4.1 使用软链接(推荐)2.4.2 修改/etc/docker/daemon.json &#xff08;推荐&#xff09;2.4.3 指定容器启动参数&…

【深度学习】PyTorch深度学习实践 - Lecture_12_Basic_RNN

文章目录一、RNN介绍1.1 RNN为什么能处理有序数据&#xff1f;1.2 RNNCell内部剖析二、How to use RNNCell In PyTorch2.1 参数分析2.2 PyTorch代码实现三、How to use RNN In PyTorch3.1 参数分析3.2 NumLayers3.3 PyTorch代码实现3.4 其他参数四、Example1&#xff1a;Using …

fpga实操训练(锁相环pll)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 锁相环pll是fpga区别于stm32、soc很重要的一个特征。通常来说&#xff0c;输入的晶振一般是25m、50m这样的&#xff0c;不一定能满足功能的开发。这…

QT—QList与QLinkedList类的常用方法

QList<T>维护了一个指针数组&#xff0c;数组元素指向每一个链表项&#xff0c;因此QList<T> 提供了基于下标的快速访问。QLinkedList<T>是一个链式列表&#xff0c;不能使用下标访问&#xff0c;与QList相比&#xff0c;当对一个很大的列表进行插入操作时&a…