MySQL中的COALESCE函數(shù)用于在一組值中選擇第一個非null值,如果所有值都為null,則返回null。它可以用于SELECT語句中的列選擇,也可以在WHERE條件中使用。
語法:
COALESCE(value1, value2, ..., valuen);
其中,value1、value2、...valuen表示要比較的值。返回值為第一個非null值的值。
例如,在以下表格中:
mysql>SELECT * FROM users; +----+--------+---------+-------+--------+ | id | name | address | phone | email | +----+--------+---------+-------+--------+ | 1 | Alice | NULL | 110 | NULL | | 2 | Bob | Taipei | NULL | bob@xx | | 3 | Cathy | Taoyuan | 09370 | NULL | | 4 | Dexter | NULL | 0987 | dex@xx | +----+--------+---------+-------+--------+
我們可以使用COALESCE函數(shù)選擇每個用戶的完整地址:
SELECT id, name, COALESCE(address, '未知地址') AS full_address FROM users;
執(zhí)行結果:
+----+--------+-------------+ | id | name | full_address| +----+--------+-------------+ | 1 | Alice | 未知地址 | | 2 | Bob | Taipei | | 3 | Cathy | Taoyuan | | 4 | Dexter | 未知地址 | +----+--------+-------------+
如果地址為空,則返回默認值“未知地址”。
在WHERE中使用:
SELECT id, name, address, email FROM users WHERE COALESCE(address, email) LIKE '%@%';
執(zhí)行結果:
+----+-------+---------+---------+ | id | name | address | email | +----+-------+---------+---------+ | 2 | Bob | Taipei | bob@xx | | 4 | Dexer | NULL | dex@xx | +----+-------+---------+---------+
本例將在地址列或電子郵件列中查找包含“@”字符的任何行。它使用COALESCE函數(shù)選擇第一個非null值為查詢條件。