跳到主要内容

OVERLAY

描述

OVERLAY 函数用于替换字符串中指定位置和长度的子串。从指定位置开始,用新字符串替换指定长度的字符。

语法

OVERLAY(<str>, <pos>, <len>, <newstr>)

参数

参数说明
<str>需要被替换的原字符串。类型:VARCHAR
<pos>替换起始位置(从1开始)。类型:INT
<len>需要替换的字符长度。类型:INT
<newstr>用于替换的新字符串。类型:VARCHAR

返回值

返回 VARCHAR 类型,为替换后的新字符串。

特殊情况:

  • 如果任意参数为 NULL,返回 NULL
  • 如果 <pos> 小于1或超出字符串长度,不进行替换,返回原字符串
  • 如果 <len> 小于0或超出剩余长度,从 <pos> 开始替换到字符串末尾

示例

  1. 基本用法:替换中间部分
SELECT overlay('Quadratic', 3, 4, 'What');
+------------------------------------+
| overlay('Quadratic', 3, 4, 'What') |
+------------------------------------+
| QuWhattic |
+------------------------------------+
  1. 负数长度:替换到末尾
SELECT overlay('Quadratic', 2, -1, 'Hi');
+-----------------------------------+
| overlay('Quadratic', 2, -1, 'Hi') |
+-----------------------------------+
| QHi |
+-----------------------------------+
  1. 位置越界:不替换
SELECT overlay('Hello', 10, 2, 'X');
+-------------------------------+
| overlay('Hello', 10, 2, 'X') |
+-------------------------------+
| Hello |
+-------------------------------+
  1. NULL 值处理
SELECT overlay('Hello', NULL, 2, 'X');
+--------------------------------+
| overlay('Hello', NULL, 2, 'X') |
+--------------------------------+
| NULL |
+--------------------------------+