
- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 資料庫備份
- SQL 表
- SQL - 建立表
- SQL - 顯示錶
- SQL - 重命名錶
- SQL - 截斷表
- SQL - 克隆表
- SQL - 臨時表
- SQL - 修改表
- SQL - 刪除表
- SQL - 刪除表資料
- SQL - 約束
- SQL 查詢
- SQL - 插入查詢
- SQL - 選擇查詢
- SQL - SELECT INTO
- SQL - INSERT INTO SELECT
- SQL - 更新查詢
- SQL - 刪除查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - 布林 (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY, ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 連線
- SQL - 使用連線
- SQL - 內連線
- SQL - 左連線
- SQL - 右連線
- SQL - 交叉連線
- SQL - 全連線
- SQL - 自連線
- SQL - 刪除連線
- SQL - 更新連線
- SQL - 左連線 vs 右連線
- SQL - Union vs Join
- SQL 金鑰
- SQL - 唯一鍵
- SQL - 主鍵
- SQL - 外部索引鍵
- SQL - 組合鍵
- SQL - 候選鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - 唯一索引
- SQL - 聚集索引
- SQL - 非聚集索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - MIN & MAX
- SQL - NULL 函式
- SQL - CHECK 約束
- SQL - DEFAULT 約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複項
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期和時間
- SQL - 遊標
- SQL - 公共表表達式
- SQL - GROUP BY vs ORDER BY
- SQL - IN vs EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字和影像函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
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 |