MySQL 中的 COALESCE() 函數用於返回指定係列表達式中的第一個非空值。如果此函數計算列表的所有值都為空,或者沒有找到任何非空值,則返回 NULL。
用法
以下是在 MySQL 中使用 COALESCE() 函數的語法:
COALESCE(value1, value2, value3....., valueN);
在上麵的語法中,我們可以看到該函數有很多參數,當它找到第一個非空值時,它返回那個非空值。有時列表的所有值都為空;在這種情況下,它返回 NULL。
COALESCE() 函數類似於 IF_ELSE 語句,如下所示:
IF (value1!= NULL) THEN
result = value1;
ELSIF (value2 != NULL) THEN
result = value2;
ELSE
result = NULL;
END IF;
參數說明
此函數隻接受一個參數,即具有各種值的列表。
value1, value2,‌..,valueN:它指定列表的值以在輸出中返回非空或空值。
通過下圖我們可以更清楚地理解:
案例1:合並(空,空);
案例2:合並(0,NULL);
在這兩種情況下,函數總是返回 NULL,因為它找不到任何非空值。
MySQL 版本支持
COALESCE() 函數可以支持以下 MySQL 版本:
- MySQL 8.0
- MySQL 5.7
- MySQL 5.6
- MySQL 5.5
- MySQL 5.1
- MySQL 5.0
- MySQL 4.1
- MySQL 4.0
讓我們通過以下示例了解 MySQL COALESCE() 函數。我們可以直接在 SELECT 語句中使用 COALESCE() 函數。
例子1
SELECT COALESCE(NULL, 'A', 'B', NULL);
輸出
當我們在列表上實現合並函數時,它會給出輸出 "A",因為它是列表的第一個非空值。
例子2
SELECT COALESCE('Mango', 'Apple', 'Orange', NULL);
輸出
當我們在列表上實現合並函數時,它會給出輸出 "Mango",因為它是列表的第一個非空值。
例子3
SELECT COALESCE(NULL, 1, 2, 'MySQL', NULL, 'JAVA', NULL);
輸出
當我們在列表上實現合並函數時,它會返回數值 "1",因為它是列表的第一個非空值。
示例 4
SELECT COALESCE(NULL, NULL, 'javatpoint', NULL);
輸出
當我們在列表上實現合並函數時,它會返回 "javatpoint",因為它是列表的第一個非空值。
讓我們在 MySQL 命令行 工具中查看以上所有示例:
例 5
在這個例子中,我們將了解 COALESCE() 函數如何處理表數據。首先,使用以下語句創建表 "employee":
CREATE TABLE employee (
Emp_id INT NOT NULL,
Name VARCHAR(45) NULL,
Designation VARCHAR(45) NULL,
Phone VARCHAR(45) NULL,
Mobile VARCHAR(45) NULL,
Office VARCHAR(45) NULL,
PRIMARY KEY (Emp_id)
);
接下來,使用 INSERT 語句將數據添加到表中,如下所示:
INSERT INTO employee(Emp_id, Name, Designation, Phone, Mobile, Office)
VALUES (1, 'Peter', 'Engineer', '101-101-101', '111-111-111', '100-100-100'),
(2, 'Joseph', 'Developer', '201-201-201', '222-222-222', NULL),
(3, 'John', 'Leader', '301-301-301', NULL, '300-300-300'),
(4, 'Stephen', 'Scientist', '401-401-401', '444-444-444', '400-400-400'),
(5, 'Suzi', 'Carpenter', NULL, '555-555-555', '500-500-500'),
(6, 'Bob', 'Actor', '601-601-601', '666-666-666', '600-600-600'),
(7, 'Donald', 'Engineer', NULL, NULL, NULL);
執行以下查詢以顯示表數據:
SELECT * FROM employee;
我們將得到以下輸出:
現在,如果員工擁有所有聯係人號碼,則執行使用 COALESCE() 函數僅返回手機號碼的語句:
SELECT Emp_id, Name, Designation, COALESCE(Mobile, Office, Phone) FROM employee;
它將給出以下輸出:
如果員工隻有辦公室或移動聯係人,則執行此返回辦公室號碼的語句。當它沒有找到辦公室號碼時,返回電話聯係。
SELECT Emp_id, Name, Designation, Mobile, Office, Phone, COALESCE(Office, Mobile) FROM employee;
我們將得到如下輸出:
IFNULL() 與 COALESCE() 函數
這些函數之間的主要區別是:
IFNULL() | COALESCE() |
---|---|
IFNULL() 函數隻需要兩個表達式。進行求值後,如果該表達式不為 NULL,則返回第一個表達式;否則,它返回第二個表達式。 | COALESCE() 函數返回指定表達式係列中的第一個非空值。如果此函數計算列表的所有值都為空,或者沒有找到任何非空值,則返回 NULL。 |
相關用法
- MySQL COALESCE( )用法及代碼示例
- MySQL CONCAT()用法及代碼示例
- MySQL CONNECTION_ID( )用法及代碼示例
- MySQL COUNT()用法及代碼示例
- MySQL CONVERT_TZ()用法及代碼示例
- MySQL CONV( )用法及代碼示例
- MySQL COT()用法及代碼示例
- MySQL CONVERT( )用法及代碼示例
- MySQL COMPRESS( )用法及代碼示例
- MySQL COS()用法及代碼示例
- MySQL CONCAT_WS()用法及代碼示例
- MySQL CHARACTER_LENGTH()用法及代碼示例
- MySQL CURTIME()用法及代碼示例
- MySQL CURRENT_TIME()用法及代碼示例
- MySQL Convert()用法及代碼示例
- MySQL CEILING()用法及代碼示例
- MySQL CHAR_LENGTH()用法及代碼示例
- MySQL Count()用法及代碼示例
- MySQL CAST( )用法及代碼示例
- MySQL CURDATE()用法及代碼示例
注:本文由純淨天空篩選整理自 MySQL COALESCE() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。