介绍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_value 比 check_expression 长,则可以截断 replacement_value。
示例
A.将 ISNULL 与 AVG 一起使用
以下示例查找所有产品的重量平均值。 它用值 50替换 Product表的 Weight列中的所有 NULL 项。
USE AdventureWorks2012;GOSELECT AVG(ISNULL(Weight, 50))FROM Production.Product;GO
下面是结果集:
--------------------------
59.79
(1 row(s) affected)
B.使用 ISNULL
以下示例选择 AdventureWorks2012中所有特价产品的说明、折扣百分比、最小量和最大量。 如果某个特殊特价产品的最大量为 NULL,则结果集中显示的 MaxQty为 0.00。
USE AdventureWorks2012;GOSELECT 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的所有产品。 请注意 IS和 NULL之间的空格。
USE AdventureWorks2012;GOSELECT Name, WeightFROM Production.ProductWHERE Weight IS NULL;GO
转自:https://msdn.microsoft.com/zh-cn/en-zh/library/ms184325.aspx