码迷,mamicode.com
首页 > 数据库 > 详细

13 三种方式替换SQL Server中的NULL值(Different ways to replace NULL in Sql Server)

时间:2016-01-26 12:27:45      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

在Sql Server中有三种方式对查询结果中的NULL值进行替换。

如有下面的一张表:

技术分享

我们可以通过自连接(Self-Join)的方式一张员工名和其对应的经理名的表:

SELECT E.[Name],M.[Name]
  FROM [tblEmployee] AS E
LEFT JOIN [tblEmployee] AS M
ON E.ManagerId = M.EmployeeId

技术分享

我们可以看到,Todd对应的Manger为NULL,这说明Todd应该是公司的最高层,他没有经理。但是这样显示很不友好,我们希望如果Todd没有经理,那么他的经理名显示为“No Mnager”,如下图:

技术分享

文章开头已经提到了,有三种方式可以替换查询结果中的NULL值,下面我们分别介绍。

一)使用ISNULL()函数替换。

SELECT E.[Name],ISNULL(M.[Name],No Manager)
  FROM [tblEmployee] AS E
LEFT JOIN [tblEmployee] AS M
ON E.ManagerId = M.EmployeeId

ISNULL()函数的第一个参数如果为NULL值,那么返回结果为第二个参数。

二)使用COALESCE()函数

SELECT E.[Name],COALESCE(M.[Name],No Manager)
  FROM [tblEmployee] AS E
LEFT JOIN [tblEmployee] AS M
ON E.ManagerId = M.EmployeeId

大家可以看到,在我们的这个例子中ISNULL函数和COALESCE函数的使用方式是一样的。其实这两个函数是有区别的,其具体区别在接下来的文章中会介绍。

三)使用CASE WHEN THEN ELSE END语句

SELECT E.[Name],CASE WHEN M.[Name] IS NULL THEN No Manager ELSE M.[Name] END
  FROM [tblEmployee] AS E
LEFT JOIN [tblEmployee] AS M
ON E.ManagerId = M.EmployeeId

这个语句有点像C#等高级语言的if else if else if else... 语句。如果WHEN后的条件成立,则会去到THEN语句,反之去到ELSE语句。在SQL中可以有很多个WHEN THEN ELSE串联起来去作为检测条件。

 

13 三种方式替换SQL Server中的NULL值(Different ways to replace NULL in Sql Server)

标签:

原文地址:http://www.cnblogs.com/kuillldan/p/5159497.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!