INSERT 替换字符串函数

INSERT(s1, x, len, s2) 函数用来替换字符串,返回被替换后的新字符串。

该函数将在 s1 字符串的 x 位置开始的 len 个字符使用 s2 字符串进行替换。例如:

INSERT('0123456789', 1, 4, 'HELLO');

上面示例,将 0123 字符串替换成 “HELLO” 字符串,替换后的字符串为 “HELLO456789”。

参数说明

  • s1:目标字符串。如果 s1 = NULL,则函数直接返回 NULL。

  • x:替换的开始位置,从 1 开始。如果 x <= 0,则直接返回 s1 原始字符串。

  • len:待替换字符的个数。如果 len = 0,则将 s2 字符串插入到 x 位置,没有任何替换操作。如果 len < 0,则直接使用 s2 字符串整体替换 s1 字符串。

  • s2:要替换的字符串。

示例用法

(1)将字符串“0123456789”的前五个字符使用“hello”字符串进行替换,如下:

mysql> select INSERT('0123456789', 1, 5, 'hello');
+-------------------------------------+
| INSERT('0123456789', 1, 5, 'hello') |
+-------------------------------------+
| hello56789                          |
+-------------------------------------+
1 row in set (0.02 sec)

由运行结果可知,x 参数是从1开始计算的。

(2)将字符串“0123456789”的前三个字符使用“hello”字符串进行替换,如下:

mysql> select INSERT('0123456789', 1, 3, 'hello');
+-------------------------------------+
| INSERT('0123456789', 1, 3, 'hello') |
+-------------------------------------+
| hello3456789                        |
+-------------------------------------+
1 row in set (0.03 sec)

(3)如果 x 参数超过字符串长度,或者 x 参数小于等于0,则返回值为原始字符串。如下:

mysql> select INSERT('0123456789', 20, 5, 'hello');
+--------------------------------------+
| INSERT('0123456789', 20, 5, 'hello') |
+--------------------------------------+
| 0123456789                           |
+--------------------------------------+
1 row in set (0.02 sec)

mysql> select INSERT('0123456789', -1, 5, 'hello');
+--------------------------------------+
| INSERT('0123456789', -1, 5, 'hello') |
+--------------------------------------+
| 0123456789                           |
+--------------------------------------+
1 row in set (0.02 sec)

mysql> select INSERT('0123456789', 0, 5, 'hello');
+-------------------------------------+
| INSERT('0123456789', 0, 5, 'hello') |
+-------------------------------------+
| 0123456789                          |
+-------------------------------------+
1 row in set (0.02 sec)

(4)如果 len 的长度大于 s1 字符串从 x 开始到结尾字符串的个数,则直接从位置 x 开始替换。如下:

mysql> select INSERT('0123456789', 5, 10, 'hello');
+--------------------------------------+
| INSERT('0123456789', 5, 10, 'hello') |
+--------------------------------------+
| 0123hello                            |
+--------------------------------------+
1 row in set (0.02 sec)

由运行结果可知,“0123456789” 字符串从 5 开始到结尾只有 6 个字符,而设置的 len=10。INSERT 函数将从 5 开始替换,将 “456789” 字符串替换成 “hello” 字符串。

(5)如果 INSERT 函数的任何一个参数为 NULL,则返回值为 NULL。如下:

mysql> select INSERT(NULL, 1, 5, 'hello');
+-----------------------------+
| INSERT(NULL, 1, 5, 'hello') |
+-----------------------------+
| NULL                        |
+-----------------------------+
1 row in set (0.02 sec)

mysql> select INSERT('0123456789', NULL, 5, 'hello');
+----------------------------------------+
| INSERT('0123456789', NULL, 5, 'hello') |
+----------------------------------------+
| NULL                                   |
+----------------------------------------+
1 row in set (0.03 sec)

mysql> select INSERT('0123456789', 1, NULL, 'hello');
+----------------------------------------+
| INSERT('0123456789', 1, NULL, 'hello') |
+----------------------------------------+
| NULL                                   |
+----------------------------------------+
1 row in set (0.03 sec)

mysql> select INSERT('0123456789', 1, 5, NULL);
+----------------------------------+
| INSERT('0123456789', 1, 5, NULL) |
+----------------------------------+
| NULL                             |
+----------------------------------+
1 row in set (0.03 sec)
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号