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字段中值为空的记录。
示例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;
这些是您应该看到的结果:
如果在列中将多个值赋为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;
实现以下DELETE语句:
DELETE FROM Orders
WHERE Price IS NULL;
以上SQL查询将删除所有订单价格为空的记录。上表只显示了一个OID为3的实体。
请执行以下SQL查询以显示实施删除后的更新表格。
SELECT * FROM Orders;
这是你应该看到的结果:
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;
它将使用 NULL 的价格更新记录,这将被替换为 2200.00。
用户还可以通过直接使用 NULL 作为第一个参数来实现 ISNULL() 函数。
SELECT ISNULL(NULL,100);
它将简单地将第二个参数作为第一个参数为NULL的返回。
使用ISNULL()函数与字符字符串
用户还可以使用ISNULL()函数将NULL替换为第二个参数中的字符串。
例2: 在下面的例子中,我们将使用ISNULL()函数将NULL值替换为另一个字符串。
SELECT ISNULL (NULL, "hi");
让我们尝试另一个示例,将另一个字符串用作第一个参数。
SELECT ISNULL ("hello", "hi");
在这种情况下,它仅返回第一个参数,因为它不是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;
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;