MySQL之IFNULL()、ISNULL、NULLIF用法

MySQL之IFNULL()、ISNULL、NULLIF用法

IFNULL语法说明


IFNULL(expr1,expr2)

如果 expr1 不是 NULL,IFNULL() 返回 expr1,否则它返回 expr2。
IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。
举个栗子:

1 mysql> SELECT IFNULL(1,0);
2 +-------------+
3 | IFNULL(1,0) |
4 +-------------+
5 | 1           |
6 +-------------+
7 1 row in set

由于 expr1 是 1,不为 NULL,所以函数返回 1. 我们可以再试下,如果让 expr1 为 NULL,是否能返回第二个参数呢? 不妨让 expr1 = null, 由于expr1为null,结果就为 NULL 了。

1 mysql> SELECT IFNULL(null,'expr1 is null');
2 +------------------------------+
3 | IFNULL(null,'expr1 is null') |
4 +------------------------------+
5 | expr1 is null                |
6 +------------------------------+
7 1 row in set

当 expr1 是 true,不为 NULL,函数返回什么呢? 我们可以再试下,不妨让 expr1 = true,然后查看结果:

1 mysql> SELECT IFNULL(true,'expr1 is true');
2 +------------------------------+
3 | IFNULL(true,'expr1 is true') |
4 +------------------------------+
5 | 1                            |
6 +------------------------------+
7 1 row in set

结果是1。为什么不是true?难道是因为布尔型true转为数值型1?那当 expr1 是 false,不为 NULL,函数返回什么呢? 我们可以再试下,不妨让 expr1 = false,然后查看结果:

1 mysql> SELECT IFNULL(false,'expr1 is false');
2 +-------------------------------+
3 | IFNULL(false,'expr1 is false')|
4 +-------------------------------+
5 | 0                             |
6 +-------------------------------+
7 1 row in set

结果是0。为什么是0,而不是false?难道是因为布尔型false转为数值型0?

我们接下来测试一下IFNULL(1/0,10)

1 mysql> SELECT IFNULL(1/0,10);
2 +---------------------+
3 | IFNULL(1/0,10)      |
4 +---------------------+
5 | 10                  |
6 +---------------------+
7 1 row in set

结果是10,这意味着1/0的结果为NULL,即空。所以返回10。
那IFNULL(0/1,10)呢?

1 mysql> SELECT IFNULL(0/1,10);
2 +---------------------+
3 | IFNULL(0/1,10)      |
4 +---------------------+
5 | 0                   |
6 +---------------------+
7 1 row in set

结果为0。是因为0/1=0,0不是空值。从这里看1/0似乎是特殊的结果,正常情况下0不能作除数。(被除数/除数=商)


ISNULL语法说明


ISNULL(expr) ;
如果expr 为null,那么ISNULL() 的返回值为 1,否则返回值为 0。

1 mysql> SELECT ISNULL(1+1);
2 +---------------------+
3 | ISNULL(1+1)         |
4 +---------------------+
5 | 0                   |
6 +---------------------+
7 1 row in set

因为1+1=2,值不为空,故返回 0 。

1 mysql> SELECT ISNULL(1/0);
2 +---------------------+
3 | ISNULL(1/0)         |
4 +---------------------+
5 | 1                   |
6 +---------------------+
7 1 row in set

1/0的结果为空,故返回 1 。


NULLIF语法说明


NULLIF(expr1,expr2);
如果expr1等于expr2,则返回空(Null)。如果expr1不等于expr2则返回expr1。

1 mysql> SELECT NULLIF(1,0);
2 +-------------+
3 | NULLIF(1,0) |
4 +-------------+
5 | 1           |
6 +-------------+
7 1 row in set
1 mysql> SELECT NULLIF(1,1);
2 +-------------+
3 | NULLIF(1,1) |
4 +-------------+
5 |      (Null) |
6 +-------------+
7 1 row in set

大家注意:SELECT NULLIF(1/0,1)的结果

1 mysql> SELECT NULLIF(1/0,1);
2 +-------------+
3 | NULLIF(1/0,1) |
4 +-------------+
5 |      (Null) |
6 +-------------+
7 1 row in set

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

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

相关文章

postgresql模糊匹配正则表达式性能问题

postgresql 模糊匹配 目前建议使用like,~~,不建议使用正则表达式, 目前有性能问题https://yq.aliyun.com/articles/405097正则表达式效率比较低下:操作符 ~~ 等效于 LIKE, 而 ~~* 对应 ILIKE。 还有 !~~ 和 !~~* 操作符 分别代表 …

数据库的原理,一篇文章搞定(一)

https://blog.csdn.net/zhangcanyan/article/details/51439012 一提到关系型数据库,我禁不住想:有些东西被忽视了。关系型数据库无处不在,而且种类繁多,从小巧实用的 SQLite 到强大的 Teradata 。但很少有文章讲解数据库是如何工作…

配置MySQL的环境变量

配置MySQL的环境变量 1.现在安装MySQL ——–下载最新版MySQL软件,将MySQL安装到系统目录中,记录当前安装目录; 如安装mysql到D:\wamp\mysql目录下 2.打开win7系统——右击计算机——单击属性-弹出win7系统页面 3.高级系统设置-环境变…

通过mysqldump备份数据库

使用mysqldump命令备份 mysqldump命令的作用是备份MySQL数据库。是将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后&…

ThinkPHP-保存生成的二维码

通过TP框架引入Qrcode插件,然后调用插件生成二维码,并保存1.引入qrcode插件: 2.功能页面-生成二维码按钮: 3.生成二维码-代码: 4.后台代码-通过vendor方法引入: //下载生成的二维码-引用方法1 pu…

工厂方法 Factory Method

背景:有一个应用框架,它可以向用户显示多个文档。在这个框架中,两个主要的抽象是类Application和Document.这两个类都是抽象的。客户必须通过它们的子类来做与举替应用相关的实现。 分析:因为被实例化的特定Document子类是与特定应…

解析.DBC文件, 读懂CAN通信矩阵,实现车内信号仿真

通常我们拿到某个ECU的通信矩阵数据库文件,.dbc后缀名的文件。 直接使用CANdb Editor打开,可以很直观的读懂信号矩阵的信息,例如下图: 现在要把上图呈现的信号从.dbc文件中解析出来,供实现自动化仿真总线信号使用&…

linux命令——init 的使用用法

1.手动输入命令会执行相关操作 #init 0 - 停机(千万不能把initdefault 设置为0 ) #init 1 - 单用户模式 #init 2 - 多用户,没有 NFS 不联网#init 3 - 完全多用户模式(标准的运行级) #init 4 - 没有用到 #init 5 - X11 (xwindow) 图…

01-数据库基础

1 数据库系统概述 1.1 数据库的4个基本概念 数据(Data):数据库中存储的基本对象数据库(Database):长期储存在计算机内、有组织的、可共享的大量数据的集合。数据库管理系统(DBMS):用户与操作系统之间的一层…

linux命令——crontab的使用方法

一、crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检…

mongdb group聚合操作

1、数据准备 [{"goods_id":1,"cat_id":4,"goods_name":"KD876","goods_number":1,"click_count":7,"shop_price":1388.00,"add_time":1240902890},{"goods_id":4,"cat_id&quo…

PHP连接MySQL数据库的几种方法

1.最简单的方式-mysql&#xff08;面向过程&#xff09; <?php $con mysql_connect("localhost","root","password"); $select_db mysql_select_db(test); if (!$select_db) {die("could not connect to the db:\n" . mysql_e…

jQuery 教程01——jQuery安装

1、简介 jQuery是一个轻量级的”写的少&#xff0c;做的多”的JavaScript库。 jQuery 极大地简化了 JavaScript 编程。 jQuery 很容易学习。 jQuery库包含以下功能&#xff1a; HTML 元素选取 HTML 元素操作 CSS 操作 HTML 事件函数 JavaScript 特效和动画 HTML DOM 遍历和…

第一个程序 快速编译链接的办法

转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/10223249.html

变量 和 注释

转自&#xff1a;白月黑羽Python3教程&#xff1a;http://www.python3.vip/doc/tutorial/python/0003/ Python语言中&#xff0c;所有的 数据 都被称之为 对象。 每个整数、小数、字符串&#xff0c;还有我们后面要学的 字典、元组、列表 等&#xff0c; 都是对象。 在Python程…

jQuery 教程02-jQuery 语法

通过 jQuery&#xff0c;您可以选取&#xff08;查询&#xff0c;query&#xff09; HTML 元素&#xff0c;并对它们执行”操作”&#xff08;actions&#xff09;。 jQuery 语法 jQuery 语法是通过选取 HTML 元素&#xff0c;并对选取的元素执行某些操作。 基础语法&#x…

jQuery教程03-jQuery 元素、id、.class和*全选择器

jQuery 基础选择器 jQuery 选择器允许您对 HTML 元素组或单个元素进行操作。 jQuery 选择器基于元素的 id、类、类型、属性、属性值等"查找"&#xff08;或选择&#xff09;HTML 元素。 它基于已经存在的 CSS 选择器&#xff0c;除此之外&#xff0c;它还有一些自定…

前台一键备份数据库+PHP实现方式

一、实现思路 1、单击备份按钮传递参数到后台&#xff0c;ajax实现&#xff1a; function backupDatabase(){var back backupDatabase;$.ajax({url:system_backup.php?dobackupDatabase,type:POST,data:back,dataType:json,beforeSend:function(){intervalwindow.setInterv…

网络操作系统 第四章 磁盘管理

习题 1.磁盘的数据结构包括哪些内容? 1)主引导扇区 2)操作系统引导扇区 3)文件分配表 4)目录区 5)数据区 2.什么是基本磁盘和动态磁盘? 1&#xff09;基本磁盘: 基本磁盘和旧版本Windows操作系统中使用了相同的磁盘结构。在使用基本磁盘时&#xff0c;我们被限制只能在每个磁…

jQuery教程04-jQuery_this选择器

jQuery选择器之特殊选择器this 相信很多刚接触jQuery的人&#xff0c;很多都会对$(this)和this的区别模糊不清&#xff0c;那么这两者有什么区别呢&#xff1f; 1、JS中的this this是JavaScript中的关键字&#xff0c;指的是当前的上下文对象&#xff0c;简单的说就是方法/属…