MariaDB REPLACE() 函数的基础用法与实例

MariaDB REPLACE() 函数用来将一个字符串中的所有指定子串替换为另一个指定的子串。

发布于

MariaDB REPLACE() 函数用来将一个字符串中的所有指定子串替换为另一个指定的子串。它可用于字符串搜索和替换操作。

语法

MariaDB REPLACE() 函数的语法如下:

REPLACE(str, from_str, to_str)
  • str: 要执行替换的源字符串
  • from_str: 要被替换的子串
  • to_str: 用于替换的新子串

该函数返回一个新字符串,其中所有出现的 from_str 子串都被替换为 to_str。如果 from_str 为空字符串,将从 str 中删除所有 to_str 子串的字符。如果任一参数为 NULL,则返回 NULL。

实例

基本替换

本示例展示如何使用 REPLACE() 执行简单的字符串替换。

SELECT REPLACE('www.mysql.com', 'mysql', 'mariadb');

以下是该语句的输出:

+----------------------------------------------+
| REPLACE('www.mysql.com', 'mysql', 'mariadb') |
+----------------------------------------------+
| www.mariadb.com                              |
+----------------------------------------------+

在原字符串中,所有出现的 ‘mysql’ 都被替换为 ‘mariadb’。

多次替换

REPLACE() 函数会替换字符串中所有出现的匹配子串。

SELECT REPLACE('iak abhik iak', 'iak', 'ok');

以下是该语句的输出:

+---------------------------------------+
| REPLACE('iak abhik iak', 'iak', 'ok') |
+---------------------------------------+
| ok abhik ok                           |
+---------------------------------------+

原字符串中的两个 ‘iak’ 都被替换为 ‘ok’。

替换为空串

将第三个参数设置为空字符串,可以从目标串中删除指定的子串。

SELECT REPLACE('123&&456&&789', '&&', '');

以下是该语句的输出:

+------------------------------------+
| REPLACE('123&&456&&789', '&&', '') |
+------------------------------------+
| 123456789                          |
+------------------------------------+

所有的 ‘&&’ 子串都被删除了。

NULL 参数

当任一参数为 NULL 时,REPLACE()将返回 NULL。

SELECT REPLACE('hello', NULL, 'hi'), REPLACE(NULL, 'a', 'b');

以下是该语句的输出:

+------------------------------+-------------------------+
| REPLACE('hello', NULL, 'hi') | REPLACE(NULL, 'a', 'b') |
+------------------------------+-------------------------+
| NULL                         | NULL                    |
+------------------------------+-------------------------+

与其他函数组合

DROP TABLE IF EXISTS mytable;
CREATE TABLE mytable (name VARCHAR(20), email VARCHAR(30));
INSERT INTO mytable VALUES
  ('John', '[email protected]'),
  ('John Doe', '[email protected]'),
  ('Mary', '[email protected]');

SELECT name,
  REPLACE(email, '@gmail.com', '@newdomain.com') AS new_email
FROM mytable;

以下是该语句的输出:

+----------+--------------------+
| name     | new_email          |
+----------+--------------------+
| John     | [email protected] |
| John Doe | [email protected]   |
| Mary     | [email protected]   |
+----------+--------------------+

本示例演示了如何与其他 SQL 语句结合使用 REPLACE()

相关函数

以下是几个与 MariaDB REPLACE() 相关的函数:

  • MariaDB SUBSTRING() 函数用来提取字符串的一部分
  • MariaDB LOCATE() 函数用来获取子串在字符串中的位置
  • MariaDB INSTR() 函数也用来获取子串位置,不过是从字符串的开头计数
  • MariaDB CONCAT() 函数用来连接多个字符串

结论

MariaDB REPLACE()函数提供了一种简单的方法在字符串中执行字符或子串的搜索替换操作。利用该函数可以方便地清理和格式化数据,也可以用于构建更复杂的字符串操作表达式。当存在多次替换的需求时,比手动拼接和替换更加高效。