跳到主要内容

SPLIT_PART

描述

该函数用于将输入字符串按分隔符分割成多个子字符串,并返回指定位置的子字符串。

使用限制

参数 start_partend_part 符号必须一致。当 start_part 取值为负数时,不能指定 end_part,否则报错。

语法声明

SPLIT_PART(str, delimiter, start_part[, end_part])

参数解释

  • str:表示需要分割的字符串。支持类型:VARCHARTINYTEXTTEXTLONGTEXTNULL 等,不支持 JSON 类型。
  • delimiter:表示用于分割字符串的分隔符。支持类型:VARCHARNULL
  • start_part:指定返回 str 被分割后的第几部分。支持类型:INTNULL
  • end_part:可选项,当指定 end_part 后,表达式返回从 start_partend_part 的字符串。支持类型:INTNULL

返回类型

  • 大部分场景下返回值类型与 str 类型保持一致,但当 strTINYTEXT 时返回值类型为 VARCHAR
  • 当表达式任意参数为 NULL 时,返回结果为 NULL
  • delimiter 不存在于 str 中,且当 start_part1 时,返回 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)