OVERLAY
描述
OVERLAY 函数用于替换字符串中指定位置和长度的子串。从指定位置开始,用新字符串替换指定长度的字符。
语法
OVERLAY(<str>, <pos>, <len>, <newstr>)
参数
| 参数 | 说明 |
|---|---|
<str> | 需要被替换的原字符串。类型:VARCHAR |
<pos> | 替换起始位置(从1开始)。类型:INT |
<len> | 需要替换的字符长度。类型:INT |
<newstr> | 用于替换的新字符串。类型:VARCHAR |
返回值
返回 VARCHAR 类型,为替换后的新字符串。
特殊情况:
- 如果任意参数为 NULL,返回 NULL
- 如果
<pos>小于1或超出字符串长度,不进行替换,返回原字符串 - 如果
<len>小于0或超出剩余长度,从<pos>开始替换到字符串末尾
示例
- 基本用法:替换中间部分
SELECT overlay('Quadratic', 3, 4, 'What');
+------------------------------------+
| overlay('Quadratic', 3, 4, 'What') |
+------------------------------------+
| QuWhattic |
+------------------------------------+
- 负数长度:替换到末尾
SELECT overlay('Quadratic', 2, -1, 'Hi');
+-----------------------------------+
| overlay('Quadratic', 2, -1, 'Hi') |
+-----------------------------------+
| QHi |
+-----------------------------------+
- 位置越界:不替换
SELECT overlay('Hello', 10, 2, 'X');
+-------------------------------+
| overlay('Hello', 10, 2, 'X') |
+-------------------------------+
| Hello |
+-------------------------------+
- NULL 值处理
SELECT overlay('Hello', NULL, 2, 'X');
+--------------------------------+
| overlay('Hello', NULL, 2, 'X') |
+--------------------------------+
| NULL |
+--------------------------------+