| MySQL IFNULL函数简介 MySQLIFNULL函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回第一个参数。 否则,IFNULL函数返回第二个参数。 两个参数可以是文字值或表达式。 以下说明了IFNULL函数的语法: IFNULL(expression_1,expression_2); SQL 如果expression_1不为NULL,则IFNULL函数返回expression_1; 否则返回expression_2的结果。 IFNULL函数根据使用的上下文返回字符串或数字。 如果要返回基于TRUE或FALSE条件的值,而不是NULL,则应使用IF函数。 MySQL的IFNULL函数示例 请参见以下IFNULL函数示例: 示例-1 SELECT IFNULL(1,0); -- returns 1 SQL 示例-2 SELECT IFNULL('',1); -- returns '' SQL 示例-3 SELECT IFNULL(NULL,'IFNULL function'); -- returns IFNULL function SQL 上面示例中的语句是怎么运行的? IFNULL(1,0)返回1,因为1不为NULL。 IFNULL('',1)返回'',因为''字符串不为NULL。 IFNULL(NULL,'IFNULL function')返回IFNULL函数字符串,因为第一个参数为NULL。 我们来看一下使用IFNULL函数的实例。 首先,使用以下语句创建一个名为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) ); SQL 每个联系人都有一个名字,业务电话和家庭电话。 其次,将数据插入到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'); SQL 一些联系人只有家庭电话或商务电话。要从contacts表中获取所有联系人姓名和电话,请使用以下查询: SELECT contactName, bizphone, homephone FROM contacts; SQL 执行上面查询语句,得到以下结果 - +---------------+----------------+----------------+ | 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 SQL 如果联系人的商务电话不可用,可以通过查询获得联系人的家庭电话也是一个获取联系方式的办法 - SELECT contactname, IFNULL(bizphone, homephone) phone FROM contacts; SQL 这可以使用IFNULL()函数来解决。如果bizphone为NULL,则IFNULL函数将返回homephone的值。 第三,使用以下查询获取所有联系人的姓名和电话: 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 SQL 请注意,应避免在WHERE子句中使用IFNULL函数,因为它会降低查询的性能。 如果要检查值是否为NULL,则可以在WHERE子句中使用IS NULL或IS NOT NULL。 |