Mysql中的 IFNULL 函数的详解

Mysql中的 IFNULL 函数的详解

概念

  • 在mysql中IFNULL() 函数用于判断第一个表达式是否为 NULL,如果第一个值不为NULL就执行第一个值。第一个值为 NULL 则返回第二个参数的值。

语法

  • IFNULL(a, b)
    

Demo 举例说明

创建表

  • create table student_one(
    sno varchar(20) not null primary key,
    sname varchar(20) not null,
    ssex varchar(20) not null,
    sbirthday datetime,
    class varchar(20)
    )charset=utf8;
    

加入数据

  • insert into student_one values('1','陈奇','男','2000-11-02','1');
    insert into student_one values('2','陈飞','男','1999-12-05','2');
    insert into student_one values('3','周杰','女','1989-03-01','3');
    insert into student_one values('4','昆凌','男','1989-04-15','4');
    insert into student_one values('5','王丽','女','1999-05-16','5');
    insert into student_one values('6','蔡蔡','男','2000-08-17','6');
    

运行结果

  • 在这里插入图片描述
举例一
  • 第一个参数不为NULL,返回第一个参数,下面的代码中’hello’不为NULL,就返回的是’hello’

  • SELECT IFNULL('hello', 'world');
    
  • 运行结果

  • 在这里插入图片描述

举例二
  • 从student_one表里面查询sno/sname字段,如果sno字段不为空,就返回sno字段,如果为空就返回sname字段。且取别名为‘字段结果’

  • SELECT IFNULL(sno,sname) AS '字段结果' FROM student_one
    
  • 运行结果

  • 在这里插入图片描述

  • 从student_one表里面class=4的行查询sno或者sname字段

  • SELECT IFNULL(sno,sname) FROM student_one WHERE class=4
    
  • 运行结果

  • 在这里插入图片描述

业务场景下使用举例
  • 或者 多表 字段 定义为某个字段 场景如:

  • ifnull( dga.code ,dr.code) agentCode, 含义说明:总代code,经销商code 作为 别名agentCode的值。

  • 使用场景:当经销商上级有总代理时 使用总代理的code,否则使用经销商的code的场景。

  •  selectds.type storeType,dr.type rtm,ifnull( dga.code ,dr.code) agentCode,ifnull(dga.agent_name_cn ,dr.name_cn) agentName,dr.code resellerCode,dr.name_cn resellerName,ds.code codeFROM dg_store dsLEFT JOIN dg_store_type dst ON dst.id = ds.typeLEFT JOIN dg_reseller dr ON dr.code = ds.reseller_codeLEFT JOIN dg_general_agent dga ON dga.id = dr.agent_id
    
  • 查询结果示例如下
  • 在这里插入图片描述

举例三
  • 从student_one表里面查询sno=10的class字段,如果表中没有class=10的字段,就会返回0

  • SELECT IFNULL((SELECT class FROM student_one WHERE sno = 10),0);
    
  • 运行结果

  • 在这里插入图片描述

举例四
  • 从student_one表里面查询sno等于1的sname字段,如果为空,就从student_one表里面查询sno等于2的ssex字段

  • SELECT IFNULL((SELECT sname from student_one WHERE sno=1),(SELECT ssex from student_one WHERE sno=2));
    
  • 运行结果

  • 在这里插入图片描述

  • 从student_one表里面查询sno等于1的sname字段,如果为空,就从student_one表里面查询sno等于2的ssex字段。如果前面的都为空,就从student_one表里面查询sno等于2的sbirthday字段

  • SELECT IFNULL(IFNULL((SELECT sname from student_one WHERE sno=1),(SELECT ssex from student_one WHERE sno=2)),(SELECT sbirthday from student_one WHERE sno=2));
    
  • 运行结果

  • 在这里插入图片描述

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

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

相关文章

RISC-V/ARM mcu OpenOCD 调试架构解析

Risc-v/ARM mcu OpenOCD 调试架构解析 最近有使用到risc-v的单片机,所以了解了下risc-v单片机的编译与调试环境的搭建,面试时问到risc-v的调试可参看以下内容。 risc-v根据官方的推荐,调试器服务是选择OpenOCD,DopenOCD(开放片上…

LeetCode:331. 验证二叉树的前序序列化(模拟 Java)

目录 331. 验证二叉树的前序序列化 题目描述: 实现代码与解析: 模拟 原理思路: 331. 验证二叉树的前序序列化 题目描述: 序列化二叉树的一种方法是使用 前序遍历 。当我们遇到一个非空节点时,我们可以记录下这个节…

基于FPGA的图像累积直方图verilog实现,包含tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 Vivado2019.2 matlab2022a 3.部分核心程序 timescale 1ns / 1ps // // Company: // Engineer: // // Design Name: // …

Qt中出现中文乱码的原因以及解决方法

Qt专栏:http://t.csdnimg.cn/C2SDN 目录 1.引言 2.原因分析 3.源文件的编码格式修改方法 4.程序内部使用的默认编码格式修改方法 5.QString转std::string的方法 6.总结 1.引言 在编写Qt程序的时候,或多或少都可能遇到用QString时候,明明…

Vue项目之子组件

子组件 项HelloWorld这样的组件,在其他组件中展示的组件,被称为子组件,展示子组件的组件被称为父组件。 例:Home组件是HelloWorld组件的父组件,App组件爱你是router-link/router-views组件的父组件。 子组件的使用方式…

路径规划——搜索算法详解(六):LPA*算法详解与Matlab代码

上文讲解了D*算法,D*算法为在动态环境下进行路径规划的场景提出了可行的解决方案,本文将继续介绍另外一种动态规划路径的方法——Lifelong Planning A*(LPA*)算法。 该算法可以看作是A*的增量版本,是一种在固定起始点…

Spring框架之WebFlux

Spring WebFlux高级实战 1、WebFlux作为核心响应式服务器基础 Spring 框架的整个基础设施都是围绕Servlet API 构建的,它们之间紧密耦合。 因此在开始深入响应式Web 之前,先回顾一下Web 模块的设计,看看它做了什么。 底层Servlet 容器负责…

力扣热题100_链表_142_环形链表 II

文章目录 题目链接解题思路解题代码 题目链接 142. 环形链表 II 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中…

市场复盘总结 20240401

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 一支股票 10%的时候可以操作, 90%的时间适合空仓等待 二进三: 进级率中 38% 最常用…

中断服务程序模板

通常定时器初始化过程如下: ①对 TMOD赋值,以确定TO和T1的工作方式。 ②计算初值,并将初值写入THO、TLO或TH1、TL1。 ③中断方式时,则对IE赋值,开放中断。 ④使TRO或TR1置位,启动定时器/计数器定时或计数。 代码 利用定时器0工作方式1&…

FMEA引领智能家居安全革新,打造无忧智能生活新纪元!

在智能家居日益普及的今天,如何确保家居安全成为消费者关注的焦点。本文将探讨如何通过FMEA(故障模式与影响分析)这一强大的质量管理工具,为智能家居赋能,打造安全无忧的智能生活新体验。 一、FMEA在智能家居领域的应用…

SSM学习——Spring JDBC

Spring JDBC 概念 Spring的JDBC模块负责数据库资源管理和错误处理,简化了开发人员对数据库的操作。 Spring JDBC通过配置数据源和JDBC模板来配置。 针对数据库操作,Spring框架提供了JdbcTemplate类,它是Spring框架数据抽象层的基础&#…