跳到主要内容

split_part:分隔符拆分

速查结论

split_part(str, delimiter, partNum) 是 Spark SQL 中用于按分隔符拆分字符串并返回指定部分的函数。

语法

split_part(str, delimiter, partNum)

参数说明

参数类型说明
strSTRING需要拆分的源字符串表达式
delimiterSTRING分隔符字符串。如果是空字符串,str 不会被分割
partNumINT要返回的部分编号(从 1 开始)。如果为负数,则从字符串末尾反向计数。如果为 0,则抛出错误

如果任何输入为 NULL,则返回 NULL。如果 partNum 超出分割部分的范围,则返回空字符串。如果 partNum 为 0,则抛出错误。如果 partNum 为负数,则从字符串末尾开始反向计数分割部分。如果分隔符是空字符串,则 str 不会被分割。

示例

> SELECT split_part('11.12.13', '.', 3);
13

常见报错与避坑指南

  • partNum 为 0 会报错split_part(str, delimiter, 0) 会直接抛出错误,因为部分编号从 1 开始。这也是该函数与 split 函数(从 0 开始索引)的重要区别。
  • partNum 超出范围返回空字符串:如果 partNum 大于实际拆分出的部分数量,函数返回空字符串 "",不会报错。例如 split_part('a.b', '.', 5) 返回 ""
  • 负数 partNum 从末尾计数split_part('a.b.c', '.', -1) 返回 c(最后一个部分)。这与 split 函数的索引逻辑不同,使用时注意区分。
  • NULL 传播:任何参数为 NULL 都会导致函数返回 NULL,而非空字符串。在 ETL 场景中注意对 NULL 值的预处理。

Since: 3.3.0

📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

备注「数据仓库技术」加入社群,每日一道大厂SQL真题

交流微信二维码

你可能还想看