全部產品
Search
文件中心

MaxCompute:COALESCE

更新時間:Dec 05, 2025

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函數屬於其他函數,更多其他業務情境的函數請參見其他函數