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.mzph.cn/news/786399.shtml

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

相关文章

R语言处理nc数据

一、nc介绍 NC文件,全称为"NetCDF"(Network Common Data Form)文件格式,是一种用于存储科学数据的通用、二进制文件格式,它由国际气象组织(International Organization for Standardization,简称ISO)开发,并作为其OMNI…

机器学习: 绪论(基础概念)

文章目录 一、机器学习做什么二、机器学习的基本术语2.1、数据相关2.1.1、数据集2.1.2、特征(Feature)2.1.3、样本空间(Sample Space) 2.2、任务相关2.2.1、分类2.2.2、回归2.2.3、聚类2.2.4、监督学习和无监督学习 三、机器学习思…

智乃想考一道鸽巢原理

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e9, maxm 4e4 5; co…

VSCode 设置vue2模板

点击设置 > 用户代码片段 > 输入Vue &#xff08;打开vue.json&#xff09;> 将代码复制内 "Print to console": {"prefix": "<","body": ["<template>"," <div class$1></div>"…

Gauss到底是不是国产数据库

华为GaussDB数据库深度解析 引言 在数字化转型的浪潮中&#xff0c;数据成为企业最宝贵的资产之一。如何高效地管理和利用这些数据&#xff0c;成为企业面临的一大挑战。数据库作为数据存储和管理的核心系统&#xff0c;其性能、安全性、可用性和扩展性等特性直接影响到企业的…

wpf ContextMenu

ContextMenu上下文菜单 ContextMenu 在 WPF 中是一个非常有用的控件&#xff0c;它提供了一个在用户执行特定操作&#xff08;如右键点击&#xff09;时显示的菜单。ContextMenu 可以附加到几乎所有的 WPF 控件上&#xff0c;使得当用户与这些控件互动时&#xff0c;能够提供一…

苹果App上架指南

苹果上架要求是苹果公司对于提交应用程序到苹果商店上架的要求和规定。这些要求主要是为了保证用户体验、应用程序的质量和安全性。以下是苹果上架要求的详细介绍&#xff1a;1. 应用程序的内容和功能必须符合苹果公司的规 苹果上架要求是苹果公司对于提交应用程序到苹果商店上…

【随笔】Git -- 高级命令(中篇)(七)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

文本直接生成2分钟视频,即将开源模型StreamingT2V

Picsart人工智能研究所、德克萨斯大学和SHI实验室的研究人员联合推出了StreamingT2V视频模型。通过文本就能直接生成2分钟、1分钟等不同时间&#xff0c;动作一致、连贯、没有卡顿的高质量视频。 虽然StreamingT2V在视频质量、多元化等还无法与Sora媲美&#xff0c;但在高速运…

【项目技术介绍篇】若依项目代码文件结构介绍

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…

深入剖析Xen与KVM虚拟化技术及其架构特点

引言 在现代数据中心与云计算领域中&#xff0c;虚拟化技术已经成为提升资源利用率、增强灵活性与可扩展性的重要基石。其中&#xff0c;Xen与KVM作为两种备受瞩目的开源虚拟化解决方案&#xff0c;分别以其独特的设计理念与技术创新引领着行业的进步与发展。Xen源自剑桥大学的…

SQLite全文搜索引擎:实现原理、应用实践和版本差异

文章目录 一、实现原理1.1 倒排索引1.2 虚拟表 二、应用在工程上的实施方法2.1 创建FTS虚拟表2.2 插入数据2.3 全文搜索2.4 关联普通表2.5 更新和删除数据2.6 优化FTS虚拟表2.7 小结 三、FTS3、FTS4和FTS5的区别3.1 FTS33.2 FTS43.3 FTS53.4 小结 四、更新SQLite的FTS版本的步骤…

主键的创建、添加、删除操作

主键也是索引的一种 主关键字(primary key)是表中的一个或多个字段&#xff0c;它的值用于唯一的标识表中的某一条记录。在两个表的关系中&#xff0c;主关键字用来在一个表中引用来自于另一个表中的特定记录。主关键字是一种唯一关键字&#xff0c;表定义的一部分。一个表的主…

基于深度学习的停车场车辆检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 上图测试结果如下图所示&#xff1a; 2.算法运行软件版本 matlab2022a 3.部分核心程序 image imread(image_test\test.jpg); image2 image;%图…

2022-04-10作业

文章目录 BC131-kiki学程序设计基础BC123-小乐乐找最大数BC27-计算球体的体积BC25-计算体重指数 BC131-kiki学程序设计基础 BoBo老师教了KiKi学习程序设计基础&#xff0c;他知道C是带类的C语言&#xff0c;这个“”主要包含三部分内容&#xff1a;对C语言进行语法上的扩展、面…

第21章-直连路由和静态路由

1. 直连路由 1&#xff09;定义&#xff1a;指路由器接口直接相连的网段的路由&#xff1b; 2&#xff09;特点&#xff1a; ① 不需要特别的配置&#xff0c;双UP(物理层数据链路层)&#xff1b; ② 在路由器的接口上配置IP地址即可&#xff1b; ③ 开机自动产生&#xff1b; …

常用的设计模式(单例模式和工厂模式)

设计模式 单例模式 私有构造函数&#xff0c;防止外部直接实例化静态成员函数&#xff0c;返回唯一实例的引用静态局部变量&#xff0c;在程序生命周期内 #include<iostream> #include<map> using namespace std;class shoppingCartManager { public:// 获取购物…

Scala第十六章节(泛型方法, 类, 特质的用法、泛型上下界、协变, 逆变, 非变的用法以及Scala列表去重排序案例)

Scala第十六章节 章节目标 掌握泛型方法, 类, 特质的用法了解泛型上下界相关内容了解协变, 逆变, 非变的用法掌握列表去重排序案例 1. 泛型 泛型的意思是泛指某种具体的数据类型, 在Scala中, 泛型用[数据类型]表示. 在实际开发中, 泛型一般是结合数组或者集合来使用的, 除此…

C# 中 == 和 Equals 的区别

在C#中&#xff0c; 和 Equals 都是用于比较两个对象是否相等的操作符或方法&#xff0c;但它们之间存在着显著的区别。这些区别主要体现在它们的操作级别、用途以及如何处理不同类型的对象比较上。 1. 操作级别和用途 操作符&#xff1a; 是一个操作符&#xff0c;用于比较…

vulhub中Apache solr XML 实体注入漏洞复现(CVE-2017-12629)

Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发&#xff0c;主要基于 HTTP 和 Apache Lucene 实现。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。此次7.1.0之前版本总共爆出两个漏洞&#xff1a;XML…