OVERLAY
描述
OVERLAY 函数用于替换字符串中指定位置和长度的子串。从指定位置开始,用新字符串替换指定长度的字符。此函数支持多字节字符。
此函数行为与 MySQL 中的 INSERT 函数行为一致。
别名
- INSERT
语法
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 |
+--------------------------------+
SELECT INSERT('🎉🎊🎈', 2, 1, '🎁');
+--------------------------------------+
| INSERT('🎉🎊🎈', 2, 1, '🎁') |
+--------------------------------------+
| 🎉🎁🎈 |
+--------------------------------------+