split_part:分隔符拆分
速查结论
split_part(str, delimiter, partNum) 是 Spark SQL 中用于按分隔符拆分字符串并返回指定部分的函数。
语法
split_part(str, delimiter, partNum)
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| str | STRING | 需要拆分的源字符串表达式 |
| delimiter | STRING | 分隔符字符串。如果是空字符串,str 不会被分割 |
| partNum | INT | 要返回的部分编号(从 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真题
