介绍IsNull函数语法,注释,返回类型

语法:

         ISNULL ( check_expression , replacement_value )
参数:

  • check_expression

  • 将被检查是否为 NULL 的 表达式 check_expression 可以为任何类型。

  • replacement_value

  • check_expression 为 NULL 时要返回的表达式。 replacement_value 必须是可以隐式转换为 check_expresssion 类型的类型。

返回类型:

返回与 check_expression 相同的类型。      如果文字 NULL 作为 check_expression 提供,则返回 replacement_value 的数据类型。    如果文字 NULL 作为 check_expression 提供并且未提供 replacement_value,则返回 int

注释:

如果 check_expression 不为 NULL,则返回它的值;否则,在将 replacement_value 隐式转换为 check_expression 的类型(如果这两个类型不同)后,则返回前者。      如果 replacement_valuecheck_expression 长,则可以截断 replacement_value

示例


A.将 ISNULL 与 AVG 一起使用

   以下示例查找所有产品的重量平均值。    它用值 50替换 Product表的 Weight列中的所有 NULL 项。

USE AdventureWorks2012;
GO
SELECT AVG(ISNULL(Weight, 50))
FROM Production.Product;
GO

下面是结果集:

--------------------------

59.79                      


(1 row(s) affected)

B.使用 ISNULL

以下示例选择 AdventureWorks2012中所有特价产品的说明、折扣百分比、最小量和最大量。    如果某个特殊特价产品的最大量为 NULL,则结果集中显示的 MaxQty0.00

USE AdventureWorks2012;
GO
SELECT Description, DiscountPct, MinQty, ISNULL(MaxQty, 0.00) AS 'Max Quantity'
FROM Sales.SpecialOffer;
GO

下面是结果集:

Description       DiscountPct       MinQty      Max Quantity

---------------   -------------     --------    ---------------

No Discount       0.00              0           0

Volume Discount   0.02              11          14

Volume Discount   0.05              15          4

Volume Discount   0.10              25          0

Volume Discount   0.15              41          0

Volume Discount   0.20              61          0

Mountain-100 Cl   0.35              0           0

Sport Helmet Di   0.10              0           0

Road-650 Overst   0.30              0           0

Mountain Tire S   0.50              0           0

Sport Helmet Di   0.15              0           0

LL Road Frame S   0.35              0           0

Touring-3000 Pr   0.15              0           0

Touring-1000 Pr   0.20              0           0

Half-Price Peda   0.50              0           0

Mountain-500 Si   0.40              0           0


(16 row(s) affected)

C.测试 WHERE 子句中的 NULL

请勿使用 ISNULL 查找 NULL 值。    而应使用 IS NULL。    下面的示例查找 weight 列中存在 NULL的所有产品。    请注意 ISNULL之间的空格。

USE AdventureWorks2012;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO

转自:https://msdn.microsoft.com/zh-cn/en-zh/library/ms184325.aspx