SPLIT_PART
描述
该函数用于将输入字符串按分隔符分割成多个子字符串,并返回指定位置的子字符串。
使用限制
参数 start_part 和 end_part 符号必须一致。当 start_part 取值为负数时,不能指定 end_part,否则报错。
语法声明
SPLIT_PART(str, delimiter, start_part[, end_part])
参数解释
str:表示需要分割的字符串。支持类型:VARCHAR、TINYTEXT、TEXT、LONGTEXT、NULL等,不支持JSON类型。delimiter:表示用于分割字符串的分隔符。支持类型:VARCHAR、NULL。start_part:指定返回str被分割后的第几部分。支持类型:INT、NULL。end_part:可选项,当指定end_part后,表达式返回从start_part到end_part的字符串。支持类型:INT、NULL。
返回类型
- 大部分场景下返回值类型与
str类型保持一致,但当str为TINYTEXT时返回值类型为VARCHAR。 - 当表达式任意参数为
NULL时,返回结果为NULL。 - 当
delimiter不存在于str中,且当start_part为1时,返回str的原始字符串。 - 当
start_part = 0时,将0按照1处理。 - 当
start_part < 0时,按照逆序处理。 - 负数按照逆序处理。
示例
SELECT
SPLIT_PART('a,b,c,d', ',', 1),
SPLIT_PART('a,b,c,d', ',', 1, 2),
SPLIT_PART('a,b,c,d', ',', 0),
SPLIT_PART('a,b,c,d', ',', -2),
SPLIT_PART('a,b,c,d', ',', 5),
SPLIT_PART('a,b,c,d', ',', -5);
返回结果如下:
+-------------------------------+----------------------------------+-------------------------------+--------------------------------+-------------------------------+--------------------------------+
| SPLIT_PART('a,b,c,d', ',', 1) | SPLIT_PART('a,b,c,d', ',', 1, 2) | SPLIT_PART('a,b,c,d', ',', 0) | SPLIT_PART('a,b,c,d', ',', -2) | SPLIT_PART('a,b,c,d', ',', 5) | SPLIT_PART('a,b,c,d', ',', -5) |
+-------------------------------+----------------------------------+-------------------------------+--------------------------------+-------------------------------+--------------------------------+
| a | a,b | a | c | | |
+-------------------------------+----------------------------------+-------------------------------+--------------------------------+-------------------------------+--------------------------------+
1 row in set (0.001 sec)