你好,欢迎来到电脑编程技巧与维护杂志社! [免费注册][请登录 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / 数据库开发
MySQL:ifnull()函数
 

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。

  推荐精品文章

·2020年9月目录 
·2020年8月目录 
·2020年7月目录 
·2020年6月目录 
·2020年5月目录 
·2020年4月目录 
·2020年3月目录 
·2020年2月目录 
·2020年1月目录 
·2019年12月目录 
·2019年11月目录 
·2019年10月目录
·2019年9月目录 
·2019年8月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区长春桥路5号6号楼1209室,邮编:100089