REPLACE()
描述
REPLACE() 函数用于替换字符串中的子字符串。这个函数会在 str 中查找所有的 from_str 并将其替换为 to_str。如果 str 中没有找到匹配的 from_str,则原始字符串将保持不变。
-
REPLACE()中任何参数为NULL的情况下,则结果返回NULL。 -
REPLACE()函数是区分大小写的,这意味着它将考虑字符串的大小写。如果您想进行大小写不敏感的替换,可以使用REPLACE(UPPER(str), UPPER(from_str), to_str)或REPLACE(LOWER(str), LOWER(from_str), to_str)来确保在不考虑大小写的情况下执行替换。 -
REPLACE()函数是多字节安全的。
语法
REPLACE(str, from_str, to_str)
参数说明
| 参数 | 必选/可选 | 说明 |
|---|---|---|
str | 必选 | 原始字符串,要进行替换的目标。 |
from_str | 必选 | 要替换的子字符串。 |
to_str | 必选 | 替换后的新字符串。 |
示例
- 示例 1:下面的查询示例使用
REPLACE函数将原始字符串中的所有子字符串abc.替换为www。
SELECT REPLACE('abc.efg.gpg.nowdew.abc.dabc.e', 'abc.', 'www');
返回结果如下:
+---------------------------------------------------------+
| REPLACE('abc.efg.gpg.nowdew.abc.dabc.e', 'abc.', 'www') |
+---------------------------------------------------------+
| wwwefg.gpg.nowdew.wwwdwwwe |
+---------------------------------------------------------+
1 row in set (0.001 sec)
- 示例 2:下面的查询示例使用
REPLACE函数,将原始字符串中的NULL替换为www,由于要替换的子字符串为NULL,整个表达式的结果将返回NULL。
SELECT REPLACE('abc.efg.gpg.nowdew.abc.dabc.e', NULL, 'www');
返回结果如下:
+-------------------------------------------------------+
| REPLACE('abc.efg.gpg.nowdew.abc.dabc.e', NULL, 'www') |
+-------------------------------------------------------+
| NULL |
+-------------------------------------------------------+
1 row in set (0.001 sec)
- 示例 3:下面的查询示例使用
REPLACE函数,将原始字符串中的abc.替换为WWW,由于REPLACE()函数区分大小写,整个表 达式的结果将返回WWWefg.gpg.nowdew.WWWdWWWe。
SELECT REPLACE('abc.efg.gpg.nowdew.abc.dabc.e', 'abc.', 'WWW');
返回结果如下:
+---------------------------------------------------------+
| REPLACE('abc.efg.gpg.nowdew.abc.dabc.e', 'abc.', 'WWW') |
+---------------------------------------------------------+
| WWWefg.gpg.nowdew.WWWdWWWe |
+---------------------------------------------------------+
1 row in set (0.000 sec)
- 示例 4:下面的查询示例中,
Hello World会被转换为大写HELLO WORLD,而world也会被转换为大写。因此,这个查询会返回结果HELLO Universe,因为它将大写的WORLD替换为Universe。
SELECT REPLACE(UPPER('Hello World'), UPPER('world'), 'Universe');
返回结果如下:
+-----------------------------------------------------------+
| REPLACE(UPPER('Hello World'), UPPER('world'), 'Universe') |
+-----------------------------------------------------------+
| HELLO Universe |
+-----------------------------------------------------------+
1 row in set (0.001 sec)
MySQL 兼容性
REPLACE() 函数的行为在不同版本中有所差异:在 MySQL 5.7 版本中,当第二个参数为 ''(空字符串),第三个参数为 NULL 时,结果将是第一个参数;而在 MySQL 8.0 版本中,结果将为 NULL。seekdb 兼容 MySQL 8.0 的这种行为。