isnull的用法

 

根据表达式是否为空,返回一个布尔值结果。

语法

 
ISNULL(expression)

参数

expression

是任何数据类型的有效表达式。

结果类型

DT_BOOL

示例

如果 DiscontinuedDate 列包含空值,此示例将返回 TRUE。

 复制代码
ISNULL(DiscontinuedDate)

如果 LastName 列中的值为空,则此示例返回“Unknown last name”,否则返回 LastName 中的值。

 复制代码
ISNULL(LastName)? "Unknown last name":LastName

如果 DaysToManufacture 列为空,则不管变量 AddDays 的值如何,此示例都始终返回 TRUE。

`ISNULL()` 函数在 SQL Server 中用于将查询结果中的 `NULL` 值替换为指定的替代值。其基本语法如下: ```sql ISNULL(check_expression, replacement_value) ``` - `check_expression`:需要检查是否为 `NULL` 的表达式。 - `replacement_value`:如果 `check_expression` 为 `NULL`,则返回的替代值。 ### 示例 1:替换 `NULL` 值为默认值 下面的示例中,`price` 列中的 `NULL` 值将被替换为 `10.00`,然后计算平均价格: ```sql USE pubs GO SELECT AVG(ISNULL(price, 10.00)) AS AveragePrice FROM titles ``` 此查询确保在计算平均值时,所有 `NULL` 值都被视为 `10.00`,从而避免了因 `NULL` 值导致的计算问题[^2]。 ### 示例 2:与聚合函数结合使用 在某些情况下,表中可能包含 `NULL` 值,当使用聚合函数(如 `SUM`)时,这些 `NULL` 值可能会导致警告或不正确的计算结果。以下示例使用 `ISNULL()` 将 `num` 列中的 `NULL` 替换为 `0`,以确保聚合计算正确执行: ```sql CREATE TABLE tb ( id INT, num INT ) INSERT INTO tb SELECT 1, 10 UNION ALL SELECT 1, 20 UNION ALL SELECT 2, 80 UNION ALL SELECT 2, NULL -- 使用 ISNULL 替换 NULL 值为 0 SELECT id, SUM(ISNULL(num, 0)) AS TotalNum FROM tb GROUP BY id ``` 通过将 `NULL` 值替换为 `0`,可以避免聚合操作时出现警告,并确保结果的准确性[^3]。 ### 示例 3:处理查询结果中的 `NULL` 假设有一个表 `Employees`,其中包含员工的姓名和奖金信息,某些员工的奖金可能未设置(即 `NULL`)。可以通过 `ISNULL()` 将 `NULL` 替换为 `0`,以确保查询结果更清晰: ```sql SELECT Name, ISNULL(Bonus, 0) AS BonusAmount FROM Employees ``` 此查询将显示所有员工的姓名和奖金金额,其中奖金为 `NULL` 的员工将显示为 `0`[^1]。 ### 示例 4:嵌套使用 `ISNULL` `ISNULL()` 函数可以嵌套使用,以提供多个替代值选项。例如,以下查询将优先使用 `Email` 字段,如果 `Email` 为 `NULL`,则尝试使用 `Phone`,如果 `Phone` 也为 `NULL`,则返回 `'No Contact Info'`: ```sql SELECT Name, ISNULL(ISNULL(Email, Phone), 'No Contact Info') AS ContactInfo FROM Contacts ``` 该查询确保即使 `Email` 和 `Phone` 都为 `NULL`,也能提供一个默认值,避免结果中出现 `NULL`[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光义

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值