依照分隔字元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類型常量時,返回報錯。
start或end非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函數屬於字串函數,更多尋找字串、轉換字串格式的相關函數請參見字串函數。