天天看點

SQL COALESCE 函數

SQL COALESCE 函數

https://docs.oracle.com/cd/B28359_01/server.111/b28286/functions023.htm#SQLRF00617

COALESCE(expr [, expr ]…)

COALESCE

傳回表達式清單中的第一個非空

expr

。您必須至少指定兩個表達式。如果所有出現的expr都評估為null,則該函數傳回null。

Oracle資料庫使用短路評估。資料庫評估每個expr值并确定它是否為NULL,而不是在确定所有expr值是否為NULL之前先評估所有的expr值。

如果所有出現的expr都是數字資料類型或可以隐式轉換為數字資料類型的任何非數字資料類型,則Oracle資料庫将确定具有最高數字優先級的參數,将其餘參數隐式轉換為該資料類型,然後傳回該資料類型。

此功能是

NVL

功能的概括。

您還可以将COALESCE用作各種CASE表達式。例如,

COALESCE (expr1, expr2)

等效于:

CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END

同樣的

COALESCE (expr1, expr2, …, exprn), for n>=3

等效于:

CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE COALESCE (expr2, …, exprn) END

其他資料:

https://docs.oracle.com/cd/B28359_01/server.111/b28286/functions.htm#SQLRF006

https://docs.oracle.com/cd/B28359_01/server.111/b28286/expressions004.htm#SQLRF20037