全部產品
Search
文件中心

MaxCompute:COALESCE

更新時間:Feb 28, 2024

MaxCompute COALESCE函數會從左至右的順序對輸入的參數進行逐一檢查,一旦遇到第一個非NULL的值,就會立即返回該值,並不再繼續檢查後面的參數。本文為您介紹COALESCE函數的命令格式、參數說明以及使用樣本。

命令格式

coalesce(<expr1>, <expr2>, ...)

參數說明

expr:必填。待驗證的值。

傳回值說明

傳回值類型和參數資料類型相同。

使用樣本

  • 樣本1:常見用法。命令樣本如下。

    --返回1。
    select coalesce(null,null,1,null,3,5,7);
  • 樣本2:參數實值型別未定義,返回報錯。

    • 錯誤命令樣本

      --參數abc未定義類型,系統引擎無法識別,導致返回報錯。
      select coalesce(null,null,1,null,abc,5,7);
    • 正確命令樣本

      select coalesce(null,null,1,null,'abc',5,7);
  • 樣本3:在非表讀取的情況下,如果參數值全部為空白,則返回報錯。錯誤命令樣本如下。

    --返回報錯,會提示至少有一個參數值非NULL。
    select coalesce(null,null,null,null);
  • 樣本4:在表讀取的情況下,如果參數值全部為空白,則返回NULL。

    未經處理資料表:

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