COALESCE函數按從左至右的順序依次檢查輸入參數,一旦遇到第一個非 NULL 值,便立即返回該值,後續參數將不再被評估。
命令格式
COALESCE(<expr1>, <expr2>, ...)
-- 標準樣本。
-- 返回1。
SELECT coalesce(NULL,NULL,1,NULL,3,5,7);參數說明
expr:必填。待驗證的值。
傳回值說明
傳回值類型和參數資料類型相同。
使用樣本
樣本1:參數實值型別未定義,返回報錯。
-- 參數abc未定義類型,系統引擎無法識別。 -- FAILED: ODPS-0130071:[1,34] Semantic analysis exception - column abc cannot be resolved SELECT COALESCE(NULL,NULL,1,NULL,abc,5,7); -- 返回1。 SELECT COALESCE(NULL,NULL,1,NULL,'abc',5,7);樣本2:在非表讀取的情況下,如果參數值全部為空白,則返回報錯。
-- 返回報錯,會提示至少有一個參數值非NULL。 -- FAILED: ODPS-0130071:[1,17] Semantic analysis exception - parameter 1 for function COALESCE expect at least one parameter should be non-null SELECT COALESCE(NULL,NULL,NULL,NULL);樣本3:在表讀取的情況下,如果參數值全部為空白,則返回NULL。
未經處理資料表:
+-----------+-------------+------------+ | shop_name | customer_id | total_price | +-----------+-------------+------------+ | ad | 10001 | 100.0 | | jk | 10002 | 300.0 | | ad | 10003 | 500.0 | | tt | NULL | NULL | +-----------+-------------+------------+由未經處理資料表可以看出,tt的值全部為空白。則執行以下語句後傳回值為NULL。
SELECT COALESCE(customer_id,total_price) FROM sale_detail WHERE shop_name='tt';
相關函數
COALESCE函數屬於其他函數,更多其他業務情境的函數請參見其他函數。