SQL - IS NULL



讓我們假設一個表,其中某些欄位包含 NULL 值。這些欄位表示其中不存在值。SQL 允許使用者建立新記錄或修改現有記錄,而無需為欄位指定值。如果未提供值,則該欄位將儲存為 NULL 值。

在 SQL 中,無法使用 =、< 或 <> 等比較運算子檢查 NULL 值。相反,我們使用 IS NULL 和 IS NOT NULL(NULL 值的否定)運算子。

SQL IS NULL 運算子

SQL 的IS NULL 運算子用於檢查列中的值是否為 NULL。如果列值為 NULL,則返回 true;否則返回 false。

NULL 是一個表示缺失或未知資料的數值,IS NULL 運算子允許我們過濾包含特定列中 NULL 值的記錄。

語法

以下是 IS NULL 運算子的語法:

SELECT column_name1, column_name2, column_name3, ... , column_nameN
FROM table_name
WHERE column_nameN IS NULL;

示例

首先,讓我們使用以下查詢建立一個名為CUSTOMERS的表:

CREATE TABLE CUSTOMERS(
 ID INT NOT NULL, 
 NAME VARCHAR(20), 
 AGE INT, 
 ADDRESS CHAR(25), 
 SALARY DECIMAL(18, 2), 
 PRIMARY KEY(ID)
);

現在,使用 INSERT 語句將值插入此表:

INSERT INTO CUSTOMERS VALUES 
(1, 'Ramesh', 32, 'Ahmedabad', NULL ),
(2, 'Khilan', 25, NULL, 1500.00 ),
(3, 'Kaushik', NULL, 'Kota', 2000.00 ),
(4, 'Chaitali', 25, 'Mumbai', NULL ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', NULL, 'Hyderabad', 4500.00 ),
(7, 'Muffy', 24, NULL, 10000.00 );

表將如下建立:

ID 姓名 (NAME) 年齡 (AGE) 地址 (ADDRESS) 薪水 (SALARY)
1 Ramesh 32 Ahmedabad NULL
2 Khilan 25 NULL 1500.00
3 Kaushik NULL Kota 2000.00
4 Chaitali 25 Mumbai NULL
5 Hardik 27 Bhopal 8500.00
6 Komal NULL Hyderabad 4500.00
7 Muffy 24 NULL 10000.00

使用 SELECT 語句的 IS NULL

我們可以使用 IS NULL 運算子和 SELECT 語句來篩選包含 NULL 值的記錄。

示例

在下面的查詢中,我們檢索 CUSTOMERS 表中地址為 null 的所有記錄:

SELECT * FROM CUSTOMERS WHERE ADDRESS IS NULL;

輸出

執行上述查詢後,將生成如下所示的輸出:

ID 姓名 (NAME) 年齡 (AGE) 地址 (ADDRESS) 薪水 (SALARY)
2 Khilan 25 NULL 1500.00
7 Muffy 24 NULL 10000.00

使用 COUNT() 函式的 IS NULL

我們還可以使用 SQL 中的 COUNT() 函式和 IS NULL 運算子來計算特定列中包含 NULL 值的記錄數。

語法

以下是使用 COUNT() 函式的 IS NULL 運算子的語法:

SELECT COUNT(column_name)
FROM table_name
WHERE condition IS NULL;

示例

以下查詢返回 CUSTOMERS 表的 SALARY 列中為空欄位 (NULL) 的記錄數:

SELECT COUNT(*) FROM CUSTOMERS WHERE SALARY IS NULL;

輸出

生成的輸出如下所示:

COUNT(*)
2

使用 UPDATE 語句的 IS NULL

我們可以使用 SQL 中帶有 "IS NULL" 運算子的 UPDATE 語句來更新特定列中包含 NULL 值的記錄。

語法

以下是 SQL 中使用 UPDATE 語句的 IS NULL 運算子的語法:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE columnname1, columnname2, ... IS NULL;

示例

在下面的查詢中,我們將 AGE 列的空 (NULL) 記錄更新為 48:

UPDATE CUSTOMERS SET AGE = 48 WHERE AGE IS NULL;

輸出

當我們執行上面的程式時,將獲得如下輸出:

Query OK, 2 rows affected (0.01 sec)
Rows matched: 2  Changed: 2  Warnings: 0

驗證

要檢查表是否已更新,請執行以下 SELECT 查詢:

SELECT * FROM CUSTOMERS;

表顯示如下:

ID 姓名 (NAME) 年齡 (AGE) 地址 (ADDRESS) 薪水 (SALARY)
1 Ramesh 32 Ahmedabad NULL
2 Khilan 25 NULL 1500.00
3 Kaushik 48 Kota 2000.00
4 Chaitali 25 Mumbai NULL
5 Hardik 27 Bhopal 8500.00
6 Komal 48 Hyderabad 4500.00
7 Muffy 24 NULL 10000.00

使用 DELETE 語句的 IS NULL

我們還可以使用 IS NULL 運算子和 DELETE 語句來刪除特定列中包含 NULL 值的記錄。

語法

以下是使用 DELETE 語句的 IS NULL 運算子的語法:

DELETE FROM table_name
WHERE columnname1, columnname2, ... IS NULL;

示例

在下面的查詢中,我們刪除 CUSTOMERS 表的 SALARY 列中存在的空 (NULL) 記錄:

DELETE FROM CUSTOMERS WHERE SALARY IS NULL;

輸出

我們得到以下結果:

Query OK, 2 rows affected (0.01 sec)

驗證

執行以下 SELECT 查詢以檢查表是否已更改:

SELECT * FROM CUSTOMERS;

如果我們編譯並執行程式,則會產生如下結果:

ID 姓名 (NAME) 年齡 (AGE) 地址 (ADDRESS) 薪水 (SALARY)
2 Khilan 25 NULL 1500.00
3 Kaushik NULL Kota 2000.00
5 Hardik 27 Bhopal 8500.00
6 Komal NULL Hyderabad 4500.00
7 Muffy 24 NULL 10000.00
廣告