sql on条件判断是要注意null值

我是因为用了merge into语法,然后on条件中判断的字段是可配置的,这就导致了,有时候判断条件多的情况下,判断的字段会碰到有null值的情况,如果on两边的字段都是null,null和null对比就会导致结果为false,采取的操作就全都是insert了,碰到这种数据,就永远都不会走到更新逻辑了。

解决方案

使用COALESCE函数:COALESCE函数用于返回一组表达式中的第一个非NULL值,将NULL值替换为其他非NULL值。例如:

MERGE INTO target_table AS T
USING source_table AS S
ON (COALESCE(T.column_name, '') = COALESCE(S.column_name, ''))
WHEN MATCHED THEN-- 更新或插入操作
WHEN NOT MATCHED THEN-- 插入操作

总结

以上方案是可以用,但是存在一个问题时,有可能类型会不匹配,不过测试后发现,基于目前我使用的数据库,采用空字符串可以兼容大部分的类型默认值,包括时间和数字,所以用COALESCE(T.column_name, ‘’)就好了。

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

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

相关文章

安全防御第二次作业

1. 防火墙支持那些NAT技术,主要应用场景是什么? 防火墙支持几乎所有的NAT技术,包括源NAT、目标NAT、双向NAT等,主要应用场景是保护内部网络免受外部网络的攻击 NAT技术可以将IP数据报文头中的IP地址转换为另一个IP地址&#xff…

stc8H驱动并控制三相无刷电机综合项目技术资料综合篇

stc8H驱动并控制三相无刷电机综合项目技术资料综合篇 🌿相关项目介绍《基于stc8H驱动三相无刷电机开源项目技术专题概要》 🔨停机状态,才能进入设置状态,可以设置调速模式,以及转动方向。 ✨所有的功能基本已经完成调试,目前所想到的功能基本已经都添加和实现。引脚利…

C++入门知识

Hello,今天我们分享一些关于C入门的知识,看完至少让你为后面的类和对象有一定的基础,所以在讲类和对象的时候,我们需要来了解一些关于C入门的知识。 什么是C C语言是结构化和模块化的语言,适合处理较小规模的程序。对…

【Python从入门到进阶】37、selenium关于phantomjs的基本使用

接上篇《36、Selenium 动作交互》 上一篇我们介绍了selenium操作网页的动作内容。本篇我们来学习有关phantomjs的相关知识。 一、selenium的缺点 在介绍PhantomJS之前,让我们先讨论一下直接使用Selenium的一些缺点。 1、显示浏览器窗口:Selenium通常需…

AndroidUtil - 强大易用的安卓工具类库

官网 https://github.com/Blankj/AndroidUtilCode/blob/master/README-CN.md 项目介绍 AndroidUtilCode 🔥 是一个强大易用的安卓工具类库,它合理地封装了安卓开发中常用的函数,具有完善的 Demo 和单元测试,利用其封装好的 API…

CUDA学习笔记0924

一、nvprof分析线程束和内存读写 (1)线程束占用率分析 线程束占用率:nvprof --metrics achieved_occupancy (2)内存读写分析 内核数据读取效率:nvprof --metrics gld_throughput 程序对设备内存带宽利…

《动手学深度学习 Pytorch版》 7.4 含并行连接的网络(GoogLeNet)

import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2l7.4.1 Inception块 GoogLNet 中的基本卷积块叫做 Inception 块(大概率得名于盗梦空间),由 4 条并行路径组成。 前 3 条路径使用窗口…

合规性管理如何帮助产品团队按时交付?

成功的产品和产品发布背后通常需要经过一个涉及多个监督机构、多功能团队和利益相关者的复杂流程。在组织的治理、风险管理和合规性(GRC)框架下,产品团队不仅需要追求市场创新,还需要确保符合所有适用的法规、标准和合同要求。由于…

libpcap之socket创建

一、 lipcap回调注册 在libpcap中,最重要的就是打开接口,其中关键函数为pcap_activate。这里只关注Linux平台。 只分析通用平台。 pcap_t * pcap_create(const char *device, char *errbuf) { ... p pcap_create_interface(device_str, errbuf); ... …

【性能测试】JMeter:集合点,同步定时器的应用实例!

一、集合点的定义 在性能测试过程中,为了真实模拟多个用户同时进行操作以度量服务器的处理能力,可以考虑同步虚拟用户以便恰好在同一时刻执行操作或发送请求。 通过插入集合点可以较真实模拟多个用户并发操作。 (注意:虽然通过加入集合点可…

Go内置函数make和new的区别?

首先纠正一下make 和 new 是内置函数,不是关键字。 变量初始化,一般分为2步,变量声明变量内存分配,var 关键字就是用来声明变量的,new和make 函数主要是用来分配内存的。 var 声明值类型的变量时,系统会默…

利用Socks5代理IP加强跨界电商爬虫的网络安全

随着跨界电商的兴起,爬虫技术在这个领域变得越来越重要。然而,网络安全一直是一个值得关注的问题。在本文中,我们将讨论如何利用代理IP和Socks5代理来增强跨界电商爬虫的网络安全,确保稳定和可靠的数据采集,同时避免封…

Leetcode13. 罗马数字转整数

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 5…

Vector Art - 矢量艺术

什么是矢量艺术? 矢量图形允许创意人员构建高质量的艺术作品,具有干净的线条和形状,可以缩放到任何大小。探索这种文件格式如何为各种规模的项目提供创造性的机会。 什么是矢量艺术作品? 矢量艺术是由矢量图形组成的艺术。这些图形是基于…

后端面试关键问题大总结

一、Java基础 1.HashMap的底层原理 2.说一下List的特点 3.介绍一下Java的基本数据类型 (问到这个问题说明你触碰到面试官的技术能力水平底线了) 二、线程 1.说一下线程的4种创建方式 2.线程池的两种创建方式,包括jdk方式和spring方式 …

怒刷LeetCode的第3天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一:动态规划 第二题 题目来源 题目内容 解决方法 方法一:模拟 方法二:数学规律 方法三:分组 第三题 题目来源 题目内容 解决方法 方法一:数学方法 方法…

QT:使用行编辑器、文本编辑器、单选按钮、水平布局、垂直布局做一个小项目

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QLineEdit> //行编辑器 #include <QTextEdit> //文本编辑器 #include <QRadioButton> //单选按钮class Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *pare…

USB总线-Linux内核USB3.0主机控制器驱动框架分析(十二)

1.概述 如下图所示&#xff0c;Linux内核中USB主机体系结构由五部分组成&#xff0c;分别为Application Software、USB Class Driver、USB Core(USB Driver)、USB Host Controller Driver、USB Host Controller。应用程序处于用户空间&#xff0c;通过系统调用访问Class Drive…

关于计算机找不到d3dx9_43.dll,无法继续执行代码修复方法

d3dx9_43.dll是一个动态链接库文件&#xff0c;它是DirectX的一个组件&#xff0c;主要用于处理游戏中的图形、声音等多媒体元素。当这个文件丢失时&#xff0c;可能会导致以下问题&#xff1a; 1. 游戏无法正常运行&#xff1a;由于d3dx9_43.dll负责处理游戏中的多媒体元素&a…

Jumpserver堡垒机

一、堡垒机概述 1、堡垒机的基本概念 堡垒机也是一台服务器&#xff0c;在一个特定的网络环境下&#xff0c;为了保障网络和数据不受来自外部和内部用户的入侵和破坏&#xff0c;而运用各种技术手段实时收集、监控网络环境中每一个组成部分&#xff08;服务器&#xff09;的系…