跳到主要内容

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>

示例

  1. 基本用法:old 为空字符串时插入
SELECT replace_empty('abc', '', 'x');
+-------------------------------+
| replace_empty('abc', '', 'x') |
+-------------------------------+
| xaxbxcx |
+-------------------------------+
  1. 正常字符串替换(与 REPLACE 相同)
SELECT replace_empty('hello', 'l', 'L');
+----------------------------------+
| replace_empty('hello', 'l', 'L') |
+----------------------------------+
| heLLo |
+----------------------------------+
  1. 空字符串的处理
SELECT replace_empty('', '', 'x');
+----------------------------+
| replace_empty('', '', 'x') |
+----------------------------+
| x |
+----------------------------+
  1. NULL 值处理
SELECT replace_empty(NULL, 'old', 'new');
+------------------------------------+
| replace_empty(NULL, 'old', 'new') |
+------------------------------------+
| NULL |
+------------------------------------+
  1. utf-8 字符
SELECT replace_empty('hello', 'l', 'ṭṛìṭ');
+--------------------------------------------+
| replace_empty('hello', 'l', 'ṭṛìṭ') |
+--------------------------------------------+
| heṭṛìṭṭṛìṭo |
+--------------------------------------------+