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