MySQL中IFNULL函数的使用方法
IFNULL函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回第一个参数。 否则,IFNULL函数返回第二个参数。
两个参数可以是文字值或表达式。
一、语法格式
IFNULL(expression_1,expression_2);
如果expression_1不为NULL,则IFNULL函数返回expression_1; 否则返回expression_2的结果。
如果要返回基于TRUE或FALSE条件的值,而不是NULL,则应使用IF函数。
二、简单示例
SELECT IFNULL(1,2); -- returns 1
SELECT IFNULL(,2); -- returns (空字符串也是有值)
SELECT IFNULL(0,2); -- returns 0(0也是有值)
SELECT IFNULL(NULL,暂无数据); -- returns 暂无数据
上述四个示例的结果表明,查询的字段不管是0还是空字符串,都不为null,会原样输出,只有查询的字段为null时,才会使用第二个参数,即自定义的文本或者数字显示。
三、应用场景
当两个表关联查询时,如果A表为主表,B表为关联表,且B表无数据时,如果为null的话我们可以换个文案显示。
例:A表是学生表 CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nick` VARCHAR(20) NOT NULL, `class_id` INT(11) NOT NULL DEFAULT 0, PRIMARY KEY (`id`) USING BTREE );
INSERT INTO student(nick, class_id) VALUES (xiaoming, 1),(xiaohong, 2),(xiaogang, 0)
B表是班级表
CREATE TABLE `class` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(20) NOT NULL, PRIMARY KEY (`id`) USING BTREE );
INSERT INTO class(name) VALUES (一班),(二班),(三班)
当我们关联查询时,已经分过班级的学生显示班级,暂无班级的学生显示暂无班级,这种业务场景下就要使用if null条件
例:SELECT s.id as 学生id,s.nick as 学生昵称,IFNULL(c.name,暂无班级) as 班级 FROM student s LEFT JOIN class c on s.class_id = c.id
查询结果为:
学生id 学生昵称 学生班级
1 xiaoming 一班 2 xiaohong 二班 3 xiaogang 暂无班级
