跳到主要内容

overlay:字符串覆盖替换

速查结论

overlay(input, replace, pos[, len]) 是 Spark SQL 中用于从指定位置开始用新字符串覆盖替换原字符串的函数。

语法

overlay(input, replace, pos[, len])

从位置 pos 开始,用 replace 替换 input,替换的长度为 len。

参数说明

参数类型说明
inputSTRING / BINARY源字符串或二进制数据
replaceSTRING / BINARY用于替换的新字符串
posINT替换的起始位置(从 1 开始计数)
lenINT可选。被替换的字符数。如果省略,则替换长度为 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真题

交流微信二维码

你可能还想看