MySQL IFNULL函数
MySQL IFNULL函数简介
MySQL IFNULL
函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL
,则返回第一个参数。 否则,IFNULL
函数返回第二个参数。
两个参数可以是文字值或表达式。
以下说明了IFNULL
函数的语法:
1 IFNULL(expression_1,expression_2);
如果expression_1
不为NULL
,则IFNULL
函数返回expression_1
; 否则返回expression_2
的结果。
IFNULL
函数根据使用的上下文返回字符串或数字。
如果要返回基于TRUE
或FALSE
条件的值,而不是NULL
,则应使用IF函数。
MySQL的IFNULL函数示例
请参见以下IFNULL
函数示例:
示例-1
1 SELECT IFNULL(1,0); -- returns 1
示例-2
1 SELECT IFNULL('',1); -- returns ''
示例-3
1 SELECT IFNULL(NULL,'IFNULL function'); -- returns IFNULL function
上面示例中的语句是怎么运行的?
IFNULL(1,0)
返回1
,因为1
不为NULL
。IFNULL('',1)
返回''
,因为''
字符串不为NULL
。IFNULL(NULL,'IFNULL function')
返回IFNULL
函数字符串,因为第一个参数为NULL
。
我们来看一下使用IFNULL
函数的实例。
首先,使用以下语句创建一个名为contacts
的新表:
1 USE testdb; 2 CREATE TABLE IF NOT EXISTS contacts ( 3 contactid INT AUTO_INCREMENT PRIMARY KEY, 4 contactname VARCHAR(20) NOT NULL, 5 bizphone VARCHAR(15), 6 homephone VARCHAR(15) 7 );
每个联系人都有一个名字,业务电话和家庭电话。
其次,将数据插入到contacts
表中:
1 INSERT INTO contacts(contactname,bizphone,homephone) 2 VALUES('John Doe','(541) 754-3009',NULL), 3 ('Cindy Minsu',NULL,'(541) 754-3110'), 4 ('Sue Greenspan','(541) 754-3010','(541) 754-3011'), 5 ('Lily Bush',NULL,'(541) 754-3111');
一些联系人只有家庭电话或商务电话。要从contacts
表中获取所有联系人姓名和电话,请使用以下查询:
1 SELECT 2 contactName, bizphone, homephone 3 FROM 4 contacts;
执行上面查询语句,得到以下结果 -
1 +---------------+----------------+----------------+ 2 | contactName | bizphone | homephone | 3 +---------------+----------------+----------------+ 4 | John Doe | (541) 754-3009 | NULL | 5 | Cindy Minsu | NULL | (541) 754-3110 | 6 | Sue Greenspan | (541) 754-3010 | (541) 754-3011 | 7 | Lily Bush | NULL | (541) 754-3111 | 8 +---------------+----------------+----------------+ 9 4 rows in set
如果联系人的商务电话不可用,可以通过查询获得联系人的家庭电话也是一个获取联系方式的办法 -
1 SELECT 2 contactname, IFNULL(bizphone, homephone) phone 3 FROM 4 contacts;
这可以使用IFNULL()
函数来解决。如果bizphone
为NULL
,则IFNULL
函数将返回homephone
的值。
第三,使用以下查询获取所有联系人的姓名和电话:
1 mysql> SELECT 2 contactname, IFNULL(bizphone, homephone) phone 3 FROM 4 contacts; 5 +---------------+----------------+ 6 | contactname | phone | 7 +---------------+----------------+ 8 | John Doe | (541) 754-3009 | 9 | Cindy Minsu | (541) 754-3110 | 10 | Sue Greenspan | (541) 754-3010 | 11 | Lily Bush | (541) 754-3111 | 12 +---------------+----------------+ 13 4 rows in set
请注意,应避免在WHERE子句中使用IFNULL
函数,因为它会降低查询的性能。
如果要检查值是否为NULL
,则可以在WHERE
子句中使用IS NULL
或IS NOT NULL
。
在本教程中,我们向您介绍了MySQL IFNULL
函数,并向您展示了如何在查询中使用IFNULL
函数。