SQL ISNULL

17 Mar 2025 | 6 分钟阅读

本教程将教我们如何在 SQL 和 SQL Server 中实现 IS NULL 条件和 IsNull 函数。

SQL 中的 IS NULL 条件

用户可以使用 IS NULL 条件来验证数据值是否为 NULL。如果值为 NULL,则条件返回 TRUE,否则返回 FALSE。用户可以在 SQL 的 SELECT、INSERT、DELETE 或 UPDATE 子句中使用 IS NULL 条件。

IS NULL 条件的语法

实现 IS NULL 条件的语法如下:

Expr IS NULL

IS NULL 条件中的参数或自变量

Expr:指定要检查 NULL 值的值或语句。

IS NULL 条件的实现

示例 1:我们将使用 SELECT 子句实现 IS NULL 条件。

如果用户想验证一个值是否为 NULL,则建议在 SQL 中使用 IS NULL 条件作为比较运算符。考虑一个使用 SELECT 语句实现 IS NULL 条件的示例。

在这种情况下,我们将使用一个 Student 表。该表包含以下记录:

S_ID名字姓氏S_CityPhone_Number
1阿曼古普塔德里8649293478
2RitikSharmaNoida9294234754
3Aditi维尔马NULL8849430799
4Harsh古普塔斋浦尔9372994792
5SaarthakSharmaMeerut7653294814

执行以下 SQL 查询以创建上述表:

现在,我们将使用 SELECT 子句检索 S_City 值为 NULL 的记录。

它将仅返回 Students 表的 S_City 字段中具有 NULL 值的记录。

SQL ISNULL

示例 2:我们将使用 SQL 中的 UPDATE 子句实现 IS NULL 条件。

让我们通过一个示例来了解在对表执行 UPDATE 操作时如何实现 IS NULL 条件。我们将使用相同的 Students 表来实现 SQL 查询。表如下:

S_ID名字姓氏S_CityPhone_Number
1阿曼古普塔德里8649293478
2RitikSharmaNoida9294234754
3Aditi维尔马NULL8849430799
4Harsh古普塔斋浦尔9372994792
5SaarthakSharmaMeerut7653294814

现在,在上述表中执行以下 UPDATE 语句:

如果您想查看更新后的表,执行以下查询将更新 Students 表中的 1 条记录。

您应该看到以下结果:

SQL ISNULL

如果列中的数据值被赋予了多个 NULL,则所有这些值都将被修改为 Ghaziabad。由于只有一个记录符合上述条件,因此只更新了该记录。

示例 3:我们将使用 SQL 的 DELETE 子句实现 IS NULL 条件。在执行查询之前,让我们创建一个表来在 DELETE 语句中实现 IS NULL 条件。

表名为 Orders。它如下:

OIDCID价格DoO
1011000.0003/06/2023
2051500.0011/06/2023
303NULL12/06/2023
4022000.0007/06/2023
5041300.0004/06/2023

要将上述表创建到数据库中,请执行以下 SQL 查询:


SQL ISNULL

执行以下 DELETE 语句:

上述 SQL 查询将删除 Order 价格为 NULL 的所有记录。上表仅显示了 OID 为 3 的这样一个实体。

执行以下 SQL 查询以显示执行删除后的更新表:

您应该看到以下结果:

SQL ISNULL

SQL 中的 ISNULL() 函数

ISNULL 函数由用户实现,当他们希望用特定值替换所有被赋为 NULL 的值时。

ISNULL() 的语法

在 SQL 查询中实现 ISNULL() 函数的语法如下:

ISNULL (Expr, Modified_value)

ISNULL() 函数中的参数

用户需要在 ISNULL() 函数中传递两个参数。参数如下:

  • Expr:ISNULL() 函数中的第一个参数可以是任何将被检查 NULL 值的所有表达式。
  • Modified_value:第二个参数是替换表达式中所有 NULL 值的值。用户需要确保替换值可以转换为表达式的数据类型。

如果表达式包含 NULL 或被视为 NULL,则 ISNULL 函数将返回替换值。但在赋值之前,函数会将 modified_value 转换为与评估表达式后的值相同的数据类型。仅当 modified_value 和 expression 的数据类型不同时才执行转换。

如果表达式评估为非 NULL 值,则 ISNULL() 函数将返回表达式的值,因为它的值保持不变。

SQL 中 ISNULL() 函数的实现

让我们通过不同场景来演示用户如何实现 SQL 的 ISNULL() 函数。

示例 1:在数字数据上实现 SQL ISNULL 函数。

我们将使用上面定义的 Orders 表来实现 ISNULL() 函数。

OIDCID价格DoO
1011000.0003/06/2023
2051500.0011/06/2023
303NULL12/06/2023
4022000.0007/06/2023
5041300.0004/06/2023

如果第一个参数为 NULL,则以下查询将返回第二个参数。


SQL ISNULL

它将更新 Price 为 NULL 的记录,该记录将被替换为 2200.00。

用户也可以通过直接使用 NULL 作为第一个参数来实现 ISNULL() 函数。


SQL ISNULL

由于第一个参数为 NULL,它将简单地返回第二个参数。

在字符串中使用 ISNULL() 函数

用户还可以实现 ISNULL() 函数来用第二个参数中的字符串替换 NULL。

示例 2:在下面的示例中,我们将使用 ISNULL() 将 NULL 值替换为另一个字符串。


SQL ISNULL

让我们尝试另一个使用不同字符串作为第一个参数的示例。


SQL ISNULL

在这种情况下,它将仅返回第一个参数,因为它不是 NULL 值。

用有意义的值填充 NULL 值

在许多情况下,数据分析师拥有大量数据记录,并且需要更清洁的数据,其中可能包含多个 NULL 值。这些 NULL 值通过使用 ISNULL 函数被替换为有意义的值。

让我们开始创建一个名为 division 的表。它保留了每次比赛中每位运动员年龄的记录。表如下:

PlayerID名称Min_AgeMax_Age
1阿曼1830
2Harsh20NULL
3AbhayNULL35
4Mayank20NULL

执行以下 SQL 查询以创建上述表并插入给定记录。

执行 SELECT 查询以确保表中有所有记录。


SQL ISNULL

Max_Age Min_Age 列中的 NULL 值表示该特定运动项目不需要最大或最小年龄即可注册。我们将用适当的值替换 NULL 值。

执行 ISNULL() 函数将 Min_Age 列中的 NULL 更改为 0,将 Max_Age 列中的 NULL 更改为 99。


SQL ISNULL
下一主题SQL Schema