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)
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号