SQL ISNULL条件

SQL ISNULL条件

本教程将教我们在SQL和SQL服务器中实现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 F_Name L_Name S_City Phone_Number
1 Aman Gupta Delhi 8649293478
2 Ritik Sharma Noida 9294234754
3 Aditi Verma NULL 8849430799
4 Harsh Gupta Jaipur 9372994792
5 Saarthak Sharma Meerut 7653294814

实现以下SQL查询以创建上述表格:

CREATE TABLE Students (
    S_ID INT,
    F_Name VARCHAR(50),
    L_Name VARCHAR(50),
    S_City VARCHAR(50),
    Phone_Number VARCHAR(20)
);
INSERT INTO Students (S_ID, F_Name, L_Name, S_City, Phone_Number)
VALUES (1, 'Aman', 'Gupta', 'Delhi', '8649293478');
INSERT INTO Students (S_ID, F_Name, L_Name, S_City, Phone_Number)
VALUES (2, 'Ritik', 'Sharma', 'Noida', '9294234754');
INSERT INTO Students (S_ID, F_Name, L_Name, S_City, Phone_Number)
VALUES (3, 'Aditi', 'Verma', NULL, '8849430799');
INSERT INTO Students (S_ID, F_Name, L_Name, S_City, Phone_Number)
VALUES (4, 'Harsh', 'Gupta', 'Jaipur', '9372994792');
INSERT INTO Students (S_ID, F_Name, L_Name, S_City, Phone_Number)
VALUES (5, 'Saarthak', 'Sharma', 'Meerut', '7653294814');

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

SELECT S_ID, F_Name, S_City
FROM Students
WHERE S_City IS NULL;

它将仅返回Students表中S_City字段中值为空的记录。

SQL ISNULL条件

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

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

S_ID F_Name L_Name S_City Phone_Number
1 Aman Gupta Delhi 8649293478
2 Ritik Sharma Noida 9294234754
3 Aditi Verma NULL 8849430799
4 Harsh Gupta Jaipur 9372994792
5 Saarthak Sharma Meerut 7653294814

现在,在上面的表格中实现以下UPDATE语句。

UPDATE Students
SET S_City = 'Ghaziabad'
WHERE S_City IS NULL;

如果您想查看更新后的表格,请执行以下查询语句,它将更新学生表中的1条记录。

SELECT S_ID, F_Name, S_City FROM Students;

这些是您应该看到的结果:

SQL ISNULL条件

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

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

表名为Orders。如下所示:

OID CID Price DoO
1 01 1000.00 03/06/2023
2 05 1500.00 11/06/2023
3 03 NULL 12/06/2023
4 02 2000.00 07/06/2023
5 04 1300.00 04/06/2023

要在数据库中创建上述表格,请执行以下 SQL 查询。

CREATE TABLE Orders (
  OID INT,
  CID INT,
  Price DECIMAL(10,2),
  DoO DATE
);

INSERT INTO Orders (OID, CID, Price, DoO)
VALUES
  (1, 01, 1000.00, '2023-06-03'),
  (2, 05, 1500.00, '2023-06-11'),
  (3, 03, NULL, '2023-06-12'),
  (4, 02, 2000.00, '2023-06-07'),
  (5, 04, 1300.00, '2023-06-04');
SELECT * FROM Orders;

SQL ISNULL条件

实现以下DELETE语句:

DELETE FROM Orders
WHERE Price IS NULL;

以上SQL查询将删除所有订单价格为空的记录。上表只显示了一个OID为3的实体。

请执行以下SQL查询以显示实施删除后的更新表格。

SELECT * FROM Orders;

这是你应该看到的结果:

SQL ISNULL条件

SQL中的ISNULL()函数

ISNULL函数是用户在希望用特定值替换所有指定为NULL的值时使用的函数。

ISNULL()函数的语法

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

ISNULL (表达式, 替换值)

ISNULL()函数中的参数

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

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

如果表达式包含或被视为空值,则ISNULL函数将返回替换值。但在分配值之前,该函数会将替换值转换为与评估表达式之后的值相同的数据类型。只有在替换值和表达式的数据类型不同的情况下才执行转换。

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

在SQL中实现ISNULL()函数

让我们看一些不同的场景,用户可以在其中实现SQL的ISNULL()函数。

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

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

OID CID Price DoO
1 01 1000.00 03/06/2023
2 05 1500.00 11/06/2023
3 03 NULL 12/06/2023
4 02 2000.00 07/06/2023
5 04 1300.00 04/06/2023

以下查询将返回第二个参数,因为第一个参数为空。

SELECT OID, CID, ISNULL(Price, 2200.00) AS Price, DoO
FROM Orders;

SQL ISNULL条件

它将使用 NULL 的价格更新记录,这将被替换为 2200.00。

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

SELECT ISNULL(NULL,100);

SQL ISNULL条件

它将简单地将第二个参数作为第一个参数为NULL的返回。

使用ISNULL()函数与字符字符串

用户还可以使用ISNULL()函数将NULL替换为第二个参数中的字符串。

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

SELECT ISNULL (NULL, "hi");

SQL ISNULL条件

让我们尝试另一个示例,将另一个字符串用作第一个参数。

SELECT ISNULL ("hello", "hi");

SQL ISNULL条件

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

使用有意义的值实现NULL值

在许多情况下,数据分析师拥有大量的数据记录,而且数据需要进行清理,可能包含多个NULL值。使用ISNULL函数,可以将这些NULL值替换为有意义的值。

让我们从创建一个名为division的表开始。它记录了每个运动员在比赛中的年龄。表如下所示:

PlayerID Name Min_Age Max_Age
1 Aman 18 30
2 Harsh 20 NULL
3 Abhay NULL 35
4 Mayank 20 NULL

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

CREATE TABLE division (
  PlayerID INT,
  Name VARCHAR(50),
  Min_Age INT,
  Max_Age INT
);
INSERT INTO division (PlayerID, Name, Min_Age, Max_Age)
VALUES
  (1, 'Aman', 18, 30),
  (2, 'Harsh', 20, NULL),
  (3, 'Abhay', NULL, 35),
  (4, 'Mayank', 20, NULL);

实现SELECT查询以确保所有记录都在表中。

SELECT * FROM division;

SQL ISNULL条件

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

实现ISNULL()函数,将Min_Age列中的NULL更改为0,将Max_Age列中的NULL更改为99:

SELECT 
PlayerID, 
Name,
ISNULL(Min_Age,0) Min_Age, 
ISNULL(Max_Age,99) Max_Age
FROM division;

SQL ISNULL条件

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程