SQL Server ISNULL 函数

17 Mar 2025 | 4 分钟阅读

它是在 SQL Server 中的一个内置函数。 它允许用户使用给定的替换值替换 NULL 值。 本文给出了 ISNULL 函数的完整概述,以在表达式或表记录具有 NULL 值时返回一个替代值。

语法

以下是说明 ISNULL 函数的语法

正如我们所看到的,此语法只接受两个参数

  • 表达式:它用于检查 NULL。 它可以是任何类型。
  • 替换:当表达式为 NULL 时将返回的值。 它必须隐式转换为表达式类型的 value。

如果表达式计算结果为 NULL,则此函数将 NULL 值替换为替换值。 当参数的数据类型不同时,SQL Server 在返回一个值之前隐式地将替换值数据类型转换为表达式数据类型。 当表达式不为 NULL 时,我们将得到表达式值。

ISNULL 函数可以在 SQL Server(从 2008 开始)、并行数据仓库、Azure SQL 数据库和 Azure SQL 数据仓库中使用。

ISNULL 函数示例

让我们通过 SQL Server 中的一些示例来探讨 ISNULL 函数。

1. ISNULL 函数与数值

以下示例使用 ISNULL 函数。 这里第一个参数是 NULL; 因此,它返回结果中第二个参数的值

执行后,我们将得到以下输出

SQL Server ISNULL Function

2. ISNULL 函数与字符串数据

以下示例使用 ISNULL 函数。 在这里,我们将得到字符串值'Hello',因为它是第一个参数。 根据 ISNULL() 函数定义,当第一个参数不为 NULL 时,它将返回第一个参数的值

执行后,我们将得到以下输出

SQL Server ISNULL Function

3. ISNULL 函数与变量

以下示例使用 ISNULL 函数并通过变量返回结果

执行后,我们将得到以下输出

SQL Server ISNULL Function

4. 表上的 ISNULL 函数

在这里,我们将看到当一个列值包含空值时,我们如何用一个有意义的值替换它。 让我们首先使用下面的语句创建一个名为 'Employee' 的表

现在,我们将使用下面的语句向该表中插入一些值

当我们验证表时,我们可以看到员工 2 和 3 具有 NULL 值。

SQL Server ISNULL Function

假设我们想在不永久更新它们的情况下替换这些列的 NULL 值。 在这种情况下,我们可以使用 ISNULL 函数将 NULL 值替换为特定值。

例如,我们想分别返回员工的年龄工资,分别为 22 和 25000,如果他们的列在 Employee 表中具有 NULL 值。 我们可以通过使用以下语句来做到这一点

执行后,我们将得到以下输出

SQL Server ISNULL Function

如果我们对表中没有 NULL 值的列运行带有 ISNULL 函数的查询,则此查询将返回行的实际值。

例如,我们已更新ID=2的员工的工资,如下所示

再次,如果我们执行 ISNULL 函数,它不会更改工资列。 请参阅以下输出

SQL Server ISNULL Function

5. ISNULL 与聚合函数

SQL Server 还使我们能够将聚合函数(如 SUM、AVG)与 ISNULL 函数一起使用。 假设我们可能需要获取 Employee 表中 salary 列的总和,如果任何 salary 列为 NULL,它将在添加工资之前被替换为 25000。

在执行聚合方法之前,我们将使用下面的查询更新 id 为 2 的员工的工资为 NULL。

以下示例首先将 NULL 值替换为 25000,然后在上面执行 SUM 函数。 请参阅以下输出

执行后,我们将得到以下输出

SQL Server ISNULL Function

同样,ISNULL 函数可用于替换 NULL 值,然后使用 AVG() 函数返回平均值。 参见以下语句

执行后,我们将得到以下输出

SQL Server ISNULL Function

SQL Server ISNULL 与 IS NULL 之间的区别

ISNULL 和 IS NULL 函数在 SQL Server 中是不同的。 当我们需要使用指定的值替换 NULL 值时,我们使用 ISNULL 函数。 另一方面,当我们想在表中标识 NULL 值时,我们使用 IS NULL 函数。

让我们看下面的例子来说明它们的区别.

假设我们想从 'Employee' 表中获取 Salary 列中包含 NULL 值的员工数据。 要获取此类信息,我们应该在 WHERE 子句中使用 IS NULL 函数,如下所示

它将返回工资为 NULL 的员工详细信息

SQL Server ISNULL Function

现在,如果我们尝试使用 ISNULL 函数获取此类信息,SQL Server 将通过以下错误

这是错误

SQL Server ISNULL Function

因此,很明显,SQL Server 不允许我们使用 ISNULL 来查找 NULL 值。