
- 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 - BOOLEAN (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 - 空值函式
- SQL - 檢查約束
- SQL - 預設約束
- 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 - 空值函式
SQL NULL 函式用於對儲存在資料庫表中的 NULL 值執行操作。
NULL 值在資料缺失或所需資訊不可用時充當資料庫中的佔位符。它是一個靈活的值,不與任何特定資料型別相關聯,並且可以在各種資料型別的列中使用,包括字串、int、varchar 等。
以下是 NULL 值的各種特徵:
NULL 值與零值或包含空格的欄位不同。具有 NULL 值的記錄是在記錄建立期間留空或未指定的記錄。
NULL 值幫助我們消除資料中的歧義。從而,在列中保持統一的資料型別。
SQL NULL 函式
為了處理資料庫表中的這些 NULL 值,SQL 提供了各種 NULL 函式。它們列出如下:
- ISNULL()
- COALESCE()
- NULLIF()
- IFNULL()
ISNULL() 函式
SQL ISNULL() 函式根據表示式是否為空返回 0 和 1。如果表示式為空,則此函式返回 1;否則,它返回 0。
語法
以下是 ISNULL() 函式的語法:
ISNULL(column_name)
示例
首先,讓我們使用以下查詢建立一個名為 CUSTOMERS 的表,其中包含客戶的個人詳細資訊,包括他們的姓名、年齡、地址和工資等:
CREATE TABLE CUSTOMERS ( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
現在,使用 INSERT INTO 語句將記錄插入此表,如下所示:
INSERT INTO CUSTOMERS VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ), (2, 'Khilan', 25, 'Delhi', 1500.00 ), (3, 'Kaushik', 23, 'Kota', NULL ), (4, 'Chaitali', 25, 'Mumbai', 6500.00 ), (5, 'Hardik', 27, 'Bhopal', 8500.00 ), (6, 'Komal', 22, 'Hyderabad', NULL ), (7, 'Indore', 24, 'Indore', 10000.00 );
該表將建立為:
ID | 姓名 | 年齡 | 地址 | 工資 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | NULL |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | NULL |
7 | Indore | 24 | Indore | 10000.00 |
以下是檢查 SALARY 是否為 NULL 的查詢:
SELECT SALARY, ISNULL(SALARY) AS Null_value FROM CUSTOMERS;
輸出
執行上述查詢後,我們將獲得“SALARY”列和 Null_value。如果 SALARY 為 NULL,則其空值為 1;否則為 0。
工資 | Null_value |
---|---|
2000.00 | 0 |
1500.00 | 0 |
NULL | 1 |
6500.00 | 0 |
8500.00 | 0 |
NULL | 1 |
10000.00 | 0 |
COALESCE() 函式
SQL COALESCE() 函式在其引數中返回第一個出現的非 NULL 表示式。如果所有表示式都為 NULL,則 COALESCE() 函式將返回 NULL。
在 COALESCE() 函式中,首先評估整數,並且整數後跟字元表示式始終產生整數作為輸出。
語法
以下是 COALESCE() 函式的語法:
COALESCE(expression_1, expression_2, expression_n);
示例
在以下查詢中,我們返回第一個出現的非 NULL 值:
SELECT COALESCE (NULL, 'welcome', 'tutorialspoint') AS Result;
輸出
執行上述查詢後,我們將得到“welcome”作為結果,因為它是非 NULL 的第一個值。
結果 |
---|
welcome |
示例
在以下查詢中,我們對 CUSTOMERS 表的 SALARY 和 AGE 列使用 COALESCE() 函式。從這兩個列中評估的第一個非 NULL 值顯示在另一個名為“Result”的列中。
SELECT NAME, SALARY, AGE, COALESCE(SALARY, AGE) AS Result FROM CUSTOMERS;
輸出
執行上述查詢後,我們將得到以下表作為結果:
姓名 | 工資 | 年齡 | 結果 |
---|---|---|---|
Ramesh | 2000.00 | 32 | 2000.00 |
Khilan | 1500.00 | 25 | 1500.00 |
Kaushik | NULL | 23 | 23.00 |
Chaitali | 6500.00 | 25 | 6500.00 |
Hardik | 8500.00 | 27 | 8500.00 |
Komal | NULL | 22 | 22.00 |
Indore | 10000.00 | 24 | 10000.00 |
NULLIF() 函式
SQL NULLIF() 函式比較兩個表示式。如果兩個表示式都相同,則返回 NULL。否則,它返回第一個表示式。此函式可以直接與 SELECT、WHERE 和 GROUP BY 等子句一起使用。
語法
以下是 NULLIF() 函式的語法:
NULLIF(expression_1, expression_2);
示例
以下 SQL 查詢使用 NULLIF() 函式比較 CUSTOMERS 表的 NAME 和 ADDRESS 列中的值。如果 NAME 值與 ADDRESS 值匹配,則結果為 NULL;否則,它返回 NAME 值。結果值儲存在另一個名為“Result”的列中。
SELECT NAME, ADDRESS, NULLIF(NAME, ADDRESS) AS Result FROM CUSTOMERS;
輸出
執行上述查詢後,我們將得到以下表作為結果:
姓名 | 地址 | 結果 |
---|---|---|
Ramesh | Ahmedabad | Ramesh |
Khilan | Delhi | Khilan |
Kaushik | Kota | Kaushik |
Chaitali | Mumbai | Chaitali |
Hardik | Bhopal | Hardik |
Komal | Hyderabad | Komal |
Indore | Indore | NULL |
IFNULL() 函式
IFNULL() 函式將資料庫表中的 NULL 值替換為特定值。此函式接受兩個引數。如果第一個引數為 NULL 值,則將其替換為第二個引數。否則,第一個引數按原樣返回。
此函式在 SQL Server 資料庫中不起作用。
如果兩個引數都為 NULL,則此函式的結果也為 NULL。
語法
以下是 IFNULL() 函式的語法:
IFNULL(column_name, value_to_replace);
示例
以下查詢評估 CUSTOMERS 表的 SALARY 列中的值。使用 IFNULL() 函式,我們用值 5500 替換此列中的 NULL 值(如果有)。
SELECT NAME, SALARY, IFNULL(SALARY, 5500) AS Result FROM CUSTOMERS;
輸出
以下是上述查詢的輸出:
姓名 | 工資 | 結果 |
---|---|---|
Ramesh | 2000.00 | 2000.00 |
Khilan | 1500.00 | 1500.00 |
Kaushik | NULL | 5500.00 |
Chaitali | 6500.00 | 6500.00 |
Hardik | 8500.00 | 8500.00 |
Komal | NULL | 5500.00 |
Indore | 10000.00 | 10000.00 |