在MySQL中,當某些運算中存在空值(NULL)時,會出現一些問題,例如:
SELECT 1 + NULL; -- 結果為NULL SELECT 'hello' || NULL; -- 結果為NULL
這是因為NULL代表未知值,無法進行運算。但是在處理數據庫時,我們有時需要進行帶有NULL值的運算,此時可以使用MySQL中提供的一些函數來處理。
一、IFNULL函數
SELECT IFNULL(NULL, 1); -- 結果為1 SELECT IFNULL(2, 1); -- 結果為2
IFNULL函數的作用是判斷第一個參數是否為NULL,如果是,則返回第二個參數,否則返回第一個參數。
二、COALESCE函數
SELECT COALESCE(NULL, 1, 2, 3); -- 結果為1 SELECT COALESCE(NULL, NULL, 2, 3); -- 結果為2
COALESCE函數的作用是返回第一個非NULL的參數。
三、NULLIF函數
SELECT NULLIF(1, 1); -- 結果為NULL SELECT NULLIF(2, 1); -- 結果為2
NULLIF函數的作用是比較兩個參數,如果相等,則返回NULL,否則返回第一個參數。
使用上述三個函數,可以處理帶有NULL值的運算。例如:
SELECT IFNULL(attended, 0) / IFNULL(total, 1) * 100 as percent FROM students;
在上面的例子中,如果某個學生的attended或total為NULL,IFNULL函數會將其替換為0或1,然后進行運算。