REPLACE_EMPTY
描述
REPLACE_EMPTY 函数用于将字符串中的一部分字符替换为其他字符。与 REPLACE 函数不同的是,当 old 为空字符串时,会将 new 字符串插入到 str 字符串的每个字符前,以及 str 字符串的最后。
该函数主要用于兼容 Presto、Trino,其行为与 Presto、Trino 中的 REPLACE() 函数完全一致。自 2.1.5 版本支持。
语法
REPLACE_EMPTY(<str>, <old>, <new>)
参数
| 参数 | 说明 |
|---|---|
<str> | 需要被替换的字符串。类型:VARCHAR |
<old> | 需要被替换掉的子字符串。类型:VARCHAR |
<new> | 用于替换 <old> 的新子字符串。类型:VARCHAR |
返回值
返回 VARCHAR 类型,为替换后的新字符串。
特殊情况:
- 如果任意参数为 NULL,返回 NULL
- 如果
<old>为空字符串,将<new>插入到<str>的每个字符前以及最后 - 如果
<old>不在<str>中,返回原始<str>
示例
- 基本用法:old 为空字符串时插入
SELECT replace_empty('abc', '', 'x');
+-------------------------------+
| replace_empty('abc', '', 'x') |
+-------------------------------+
| xaxbxcx |
+-------------------------------+
- 正常字符串替换(与 REPLACE 相同)
SELECT replace_empty('hello', 'l', 'L');
+----------------------------------+
| replace_empty('hello', 'l', 'L') |
+----------------------------------+
| heLLo |
+----------------------------------+
- 空字符串的处理
SELECT replace_empty('', '', 'x');
+----------------------------+
| replace_empty('', '', 'x') |
+----------------------------+
| x |
+----------------------------+
- NULL 值处理
SELECT replace_empty(NULL, 'old', 'new');
+------------------------------------+
| replace_empty(NULL, 'old', 'new') |
+------------------------------------+
| NULL |
+------------------------------------+
- utf-8 字符
SELECT replace_empty('hello', 'l', 'ṭṛìṭ');
+--------------------------------------------+
| replace_empty('hello', 'l', 'ṭṛìṭ') |
+--------------------------------------------+
| heṭṛìṭṭṛìṭo |
+--------------------------------------------+