SqlServer2008实例42NULL函数

    由于NULL值是未知的,它可能会弄乱相关代码-SQL Server提供了函数来处理代码中的NULL值,
                           NULL函数

函数名描  述
ISNULLISNULL检测表达式是否为NULL,如果是的话替换NULL值为另外一个值
COALESCECOALESCE函数返回指定表达式列表的第一个非NULL值
NULLIF当指定的两个表达式有相同值的时候,NULLIF返回NULL值,否则返回第一个表达式的值下面的几个技巧会演示这些函数。

1.用另一个值替换NULL值
ISNULL验证表达式是否为NULL,如果是的话,用另一个值替换NULL值。
示例:任何NULL值都会被替换为另外的值:

USE AdventureWorks
GO

SELECT JobCandidateID,EmployeeID,
       ISNULL(EmployeeID,0) Cleaned_BussinessEntityID
FROM HumanResources.JobCandidate       

2.使用ISNULL进行灵活的搜索

示例1:如何在变量可能有或没有填充的情况下在查询中进行灵活、动态的搜索。首先,声明了3个局部搜索变量ProductID- StartDate和StandardCost,然后,查询以根据所有、一些或者0个参数来返回结果。

USE AdventureWorks
GO

--用于搜索的局部变量
DECLARE @ProductID int
DECLARE @StartDate datetime
DECLARE @StandardCost money

--只使用了@ProductID
SET @ProductID=711

SELECT ProductID,StartDate,StandardCost
FROM Production.ProductCostHistory
WHERE ProductID=ISNULL(@ProductID,ProductID) AND
      StartDate=ISNULL(@StartDate,StartDate) AND
      StandardCost=ISNULL(@StandardCost,StandardCost)    


示例2:通过最小和最大的StandardCost范围来进行搜索:

USE AdventureWorks
GO

--用于搜索的局部变量
DECLARE @ProductID int
DECLARE @MinStardardCost money
DECLARE @MaxStandardCost money

SET @MinStardardCost=3.3963
SET @MaxStandardCost=10.0000


SELECT ProductID,StartDate,StandardCost
FROM Production.ProductCostHistory
WHERE ProductID=ISNULL(@ProductID,ProductID) AND
      StandardCost BETWEEN ISNULL(@MinStardardCost,StandardCost) AND
      ISNULL(@MaxStandardCost,StandardCost)
ORDER BY StandardCost  

3.返回表达式列表中第一个非NULL值

COALESCE函数从提供的表达式列表中返回第一个非NULL值。语法是:
COALESCE(expression [ ,..n】,
示例:使用COALESCE来返回第一个出现的非NULL值:

USE AdventureWorks
GO

DECLARE @Value1 int
DECLARE @Value2 int
DECLARE @Value3 int

SET @Value2=22
SET @Value3=955

SELECT COALESCE(@Value1,@Value2,@Value3)  

4.当两个表达式相等的时候返回NULL值,否则返回第一个表达式

    当提供的两个表达式有相同值的时候,NULLIF返回NULL值;否则返回第一个表达式。
    示例:使用NULLIF来运算两个表达式。如果两个表达式相等,NULL值会被返回;否则会返回第一个运算的表达式:

USE AdventureWorks
GO

DECLARE @Value1 int
DECLARE @Value2 int

SET @Value1=22
SET @Value2=955

SELECT NULLIF(@Value1,@Value2)  



   

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页