REPLACE_EMPTY
更新时间:2025-10-17
描述
REPLACE_EMPTY 函数用于将字符串中的一部分字符替换为其他字符。和 REPLACE 函数不同的是,当 old 为空字符串时,会将 new 字符串插入到 str 字符串的每个字符前,以及 str 字符串的最后。
除此之外,其他行为和 REPLACE() 函数完全一致。
该函数主要用于兼容 Presto、Trino,其行为了 Presto、Trino 中的 REPLACE() 函数完全一致。
自 2.1.5 版本支持。
语法
SQL
1REPLACE_EMPTY ( <str>, <old>, <new> )
参数
| 参数 | 说明 |
|---|---|
<str> |
需要被替换的字符串 |
<old> |
需要被替换掉的子字符串,如果<old>不在<str>中,则不会进行替换,如果 <old> 为空字符串时,会将 <new> 字符串插入到 <str> 字符串的每个字符前 |
<new> |
用于替换 <old> 的新子字符串 |
返回值
返回替换掉子字符串后的新字符串。特殊情况:
- 任意参数中有一个为 NULL,则返回 NULL
- 如果
old为空字符串时,则返回将new字符串插入到str字符串的每个字符前的字符串
举例
SQL
1SELECT replace('hello world', 'world', 'universe');
Text
1+---------------------------------------------+
2| replace('hello world', 'world', 'universe') |
3+---------------------------------------------+
4| hello universe |
5+---------------------------------------------+
SQL
1SELECT replace_empty("abc", '', 'xyz');
Text
1+---------------------------------+
2| replace_empty('abc', '', 'xyz') |
3+---------------------------------+
4| xyzaxyzbxyzcxyz |
5+---------------------------------+
SQL
1SELECT replace_empty("", "", "xyz");
Text
1+------------------------------+
2| replace_empty('', '', 'xyz') |
3+------------------------------+
4| xyz |
5+------------------------------+
