全部產品
Search
文件中心

MaxCompute:SPLIT_PART

更新時間:Feb 28, 2024

依照分隔字元separator拆分字串str,返回從start部分到end部分的子串(閉區間)。

命令格式

string split_part(string <str>, string <separator>, bigint <start>[, bigint <end>])

參數說明

  • str:必填。STRING類型。待拆分的字串。如果是BIGINT、DOUBLE、DECIMAL或DATETIME類型,則會隱式轉換為STRING類型後參與運算。

  • separator:必填。STRING類型常量。拆分用的分隔字元,可以是一個字元,也可以是一個字串。

  • start:必填。BIGINT類型常量,必須大於0。表示返回段的開始編號(從1開始)。

  • end:BIGINT類型常量,大於等於start。表示返回段的截止編號,可省略,預設時表示和start取值相等,返回start指定的段。

傳回值說明

返回STRING類型。返回規則如下:

  • 如果start的值大於切分後實際的分段數,例如字串拆分完有6個片段,start大於6,返回空串。

  • 如果separator不存在於str中,且start指定為1,返回整個str。如果str為空白串,則輸出空串。

  • 如果separator為空白串,則返回原字串str

  • 如果end大於片段個數,返回從start開始的子串。

  • str非STRING、BIGINT、DOUBLE、DECIMAL或DATETIME類型時,返回報錯。

  • separator非STRING類型常量時,返回報錯。

  • startend非BIGINT類型常量時,返回報錯。

  • separator外,如果任一參數值為NULL,返回NULL。

使用樣本

  • 樣本1:依照分隔字元,拆分字串a,b,c,d,返回指定部分的子串。命令樣本如下。

    --返回a。
    select split_part('a,b,c,d', ',', 1);
    --返回a,b。
    select split_part('a,b,c,d', ',', 1, 2);
  • 樣本2:start的值大於切分後實際的分段數。命令樣本如下。

    --返回空串。
    select split_part('a,b,c,d', ',', 10);
  • 樣本3:separator不存在於str中。命令樣本如下。

    --返回a,b,c,d。
    select split_part('a,b,c,d', ':', 1);
    --返回空串。
    select split_part('a,b,c,d', ':', 2);
  • 樣本4:separator為空白串。命令樣本如下。

    --返回a,b,c,d。
    select split_part('a,b,c,d', '', 1);
  • 樣本5:end的值大於切分後實際的分段數。命令樣本如下。

    --返回b,c,d。
    select split_part('a,b,c,d', ',', 2, 6);
  • 樣本6:除separator外,任一輸入參數為NULL。命令樣本如下。

    --返回NULL。
    select split_part('a,b,c,d', ',', null);

相關函數

SPLIT_PART函數屬於字串函數,更多尋找字串、轉換字串格式的相關函數請參見字串函數