overlay:字符串覆盖替换
速查结论
overlay(input, replace, pos[, len]) 是 Spark SQL 中用于从指定位置开始用新字符串覆盖替换原字符串的函数。
语法
overlay(input, replace, pos[, len])
从位置 pos 开始,用 replace 替换 input,替换的长度为 len。
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| input | STRING / BINARY | 源字符串或二进制数据 |
| replace | STRING / BINARY | 用于替换的新字符串 |
| pos | INT | 替换的起始位置(从 1 开始计数) |
| len | INT | 可选。被替换的字符数。如果省略,则替换长度为 replace 的长度;如果为 0,则相当于插入操作 |
示例
> SELECT overlay('Spark SQL' PLACING '_' FROM 6);
Spark_SQL
> SELECT overlay('Spark SQL' PLACING 'CORE' FROM 7);
Spark CORE
> SELECT overlay('Spark SQL' PLACING 'ANSI ' FROM 7 FOR 0);
Spark ANSI SQL
> SELECT overlay('Spark SQL' PLACING 'tructured' FROM 2 FOR 4);
Structured SQL
> SELECT overlay(encode('Spark SQL', 'utf-8') PLACING encode('_', 'utf-8') FROM 6);
Spark_SQL
> SELECT overlay(encode('Spark SQL', 'utf-8') PLACING encode('CORE', 'utf-8') FROM 7);
Spark CORE
> SELECT overlay(encode('Spark SQL', 'utf-8') PLACING encode('ANSI ', 'utf-8') FROM 7 FOR 0);
Spark ANSI SQL
> SELECT overlay(encode('Spark SQL', 'utf-8') PLACING encode('tructured', 'utf-8') FROM 2 FOR 4);
Structured SQL
常见报错与避坑指南
- pos 从 1 开始计数:起始位置基于 1(而非 0),pos = 1 表示字符串的第一个字符。注意与编程语言中常见的 0 起始索引区分。
- FOR 0 可实现插入:将 len 设为 0 时,replace 将插入到 pos 位置而不删除任何原有字符,相当于在指定位置插入字符串。
Since: 3.0.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

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