更新时间:2023-10-25 GMT+08:00

split_part

split_part函数用于依照分隔符separator拆分字符串str,返回从start部分到end部分的子串(闭区间)。

命令格式

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

参数说明

表1 参数说明

参数

是否必选

参数类型

说明

str

STRING

待拆分的字符串。

separator

STRING

STRING类型常量。拆分用的分隔符,可以是一个字符,也可以是一个字符串。

start

STRING

BIGINT类型常量,必须大于0。表示返回段的开始编号(从1开始)。

end

BIGINT

BIGINT类型常量,大于等于start。表示返回段的截止编号,可省略,缺省时表示和start取值相等,返回start指定的段。

返回值说明

返回STRING类型的值。

  • 如果start的值大于切分后实际的分段数,例如字符串拆分完有4个片段,start大于4,返回空串。
  • 如果separator不存在于str中,且start指定为1,返回整个str。如果str为空串,则输出空串。
  • 如果separator为空串,则返回原字符串str。
  • 如果end大于片段个数,返回从start开始的子串。
  • str非STRING、BIGINT、DOUBLE、DECIMAL或DATETIME类型时,返回报错。
  • start或end非BIGINT类型常量时,返回报错。
  • 除separator外,如果任一参数值为NULL,返回NULL。

示例代码

返回aa。

select split_part('aa,bb,cc,dd', ',', 1); 

返回aa,bb。

select split_part('aa,bb,cc,dd', ',', 1, 2);

返回空串。

select split_part('aa,bb,cc,dd', ',', 10);

返回aa,bb,cc,dd。

select split_part('aa,bb,cc,dd', ':', 1);

返回空串。

select split_part('aa,bb,cc,dd', ':', 2);

返回aa,bb,cc,dd。

select split_part('aa,bb,cc,dd', '', 1);

返回bb,cc,dd。

select split_part('aa,bb,cc,dd', ',', 2, 6);

返回NULL。

select split_part('aa,bb,cc,dd', ',', null);