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的字节数组的切片。
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| str | STRING / BINARY | 源字符串或字节数组 |
| pos | INT | 起始位置(从1开始计数,支持负值表示从末尾倒数) |
| len | INT | 可选。要截取的长度,不指定则截取到末尾 |
示例
> 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真题
