SQL Server ISNULL 函数17 Mar 2025 | 4 分钟阅读 它是在 SQL Server 中的一个内置函数。 它允许用户使用给定的替换值替换 NULL 值。 本文给出了 ISNULL 函数的完整概述,以在表达式或表记录具有 NULL 值时返回一个替代值。 语法以下是说明 ISNULL 函数的语法 正如我们所看到的,此语法只接受两个参数
如果表达式计算结果为 NULL,则此函数将 NULL 值替换为替换值。 当参数的数据类型不同时,SQL Server 在返回一个值之前隐式地将替换值数据类型转换为表达式数据类型。 当表达式不为 NULL 时,我们将得到表达式值。 ISNULL 函数可以在 SQL Server(从 2008 开始)、并行数据仓库、Azure SQL 数据库和 Azure SQL 数据仓库中使用。 ISNULL 函数示例让我们通过 SQL Server 中的一些示例来探讨 ISNULL 函数。 1. ISNULL 函数与数值以下示例使用 ISNULL 函数。 这里第一个参数是 NULL; 因此,它返回结果中第二个参数的值 执行后,我们将得到以下输出 ![]() 2. ISNULL 函数与字符串数据以下示例使用 ISNULL 函数。 在这里,我们将得到字符串值'Hello',因为它是第一个参数。 根据 ISNULL() 函数定义,当第一个参数不为 NULL 时,它将返回第一个参数的值 执行后,我们将得到以下输出 ![]() 3. ISNULL 函数与变量以下示例使用 ISNULL 函数并通过变量返回结果 执行后,我们将得到以下输出 ![]() 4. 表上的 ISNULL 函数在这里,我们将看到当一个列值包含空值时,我们如何用一个有意义的值替换它。 让我们首先使用下面的语句创建一个名为 'Employee' 的表 现在,我们将使用下面的语句向该表中插入一些值 当我们验证表时,我们可以看到员工 2 和 3 具有 NULL 值。 ![]() 假设我们想在不永久更新它们的情况下替换这些列的 NULL 值。 在这种情况下,我们可以使用 ISNULL 函数将 NULL 值替换为特定值。 例如,我们想分别返回员工的年龄和工资,分别为 22 和 25000,如果他们的列在 Employee 表中具有 NULL 值。 我们可以通过使用以下语句来做到这一点 执行后,我们将得到以下输出 ![]() 如果我们对表中没有 NULL 值的列运行带有 ISNULL 函数的查询,则此查询将返回行的实际值。 例如,我们已更新ID=2的员工的工资,如下所示 再次,如果我们执行 ISNULL 函数,它不会更改工资列。 请参阅以下输出 ![]() 5. ISNULL 与聚合函数SQL Server 还使我们能够将聚合函数(如 SUM、AVG)与 ISNULL 函数一起使用。 假设我们可能需要获取 Employee 表中 salary 列的总和,如果任何 salary 列为 NULL,它将在添加工资之前被替换为 25000。 在执行聚合方法之前,我们将使用下面的查询更新 id 为 2 的员工的工资为 NULL。 以下示例首先将 NULL 值替换为 25000,然后在上面执行 SUM 函数。 请参阅以下输出 执行后,我们将得到以下输出 ![]() 同样,ISNULL 函数可用于替换 NULL 值,然后使用 AVG() 函数返回平均值。 参见以下语句 执行后,我们将得到以下输出 ![]() SQL Server ISNULL 与 IS NULL 之间的区别ISNULL 和 IS NULL 函数在 SQL Server 中是不同的。 当我们需要使用指定的值替换 NULL 值时,我们使用 ISNULL 函数。 另一方面,当我们想在表中标识 NULL 值时,我们使用 IS NULL 函数。 让我们看下面的例子来说明它们的区别. 假设我们想从 'Employee' 表中获取 Salary 列中包含 NULL 值的员工数据。 要获取此类信息,我们应该在 WHERE 子句中使用 IS NULL 函数,如下所示 它将返回工资为 NULL 的员工详细信息 ![]() 现在,如果我们尝试使用 ISNULL 函数获取此类信息,SQL Server 将通过以下错误 这是错误 ![]() 因此,很明显,SQL Server 不允许我们使用 ISNULL 来查找 NULL 值。 |
我们请求您订阅我们的新闻通讯以获取最新更新。