跳到主要内容

substring:截取子字符串

速查结论

substring(str, pos[, len]) 是 Spark SQL 中用于从指定位置截取子字符串或字节数组切片的函数。

语法

substring(str, pos[, len]) - 返回从位置pos开始,长度为len的字符串str的子字符串,或从位置pos开始,长度为len的字节数组的切片。

substring(str FROM pos[ FOR len]]) - 返回从位置pos开始,长度为len的字符串str的子字符串,或从位置pos开始,长度为len的字节数组的切片。

参数说明

参数类型说明
strSTRING / BINARY源字符串或字节数组
posINT起始位置(从1开始计数,支持负值表示从末尾倒数)
lenINT可选。要截取的长度,不指定则截取到末尾

示例

> SELECT substring('Spark SQL', 5);
k SQL
> SELECT substring('Spark SQL', -3);
SQL
> SELECT substring('Spark SQL', 5, 1);
k
> SELECT substring('Spark SQL' FROM 5);
k SQL
> SELECT substring('Spark SQL' FROM -3);
SQL
> SELECT substring('Spark SQL' FROM 5 FOR 1);
k
> SELECT substring(encode('Spark SQL', 'utf-8'), 5);
k SQL

常见报错与避坑指南

  • 位置从1开始:Spark SQL 中substring的位置索引从1开始(而非0),使用时注意与编程语言中的0-based索引区分。
  • 负值pos的含义pos为负值时表示从字符串末尾往前数。例如pos = -3表示从倒数第3个字符开始截取到末尾。

Since: 1.5.0

📱关注公众号

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

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

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

交流微信二维码

你可能还想看