九月 2, 2023
摘要:在本教程中,我们将向您介绍 PostgreSQL 的字符串替换函数,这些函数在字符串中搜索子字符串并将其替换为新的子字符串。
目录
PostgreSQL REPLACE 函数简介
有时,您想要搜索列中的字符串并将其替换为新字符串,例如替换过时的电话号码、损坏的 URL 和拼写错误。
要搜索所有出现的字符串并将其替换为新字符串,请使用REPLACE()
函数。
下面说明了 PostgreSQL 的REPLACE()
函数的语法:
REPLACE(source, old_text, new_text );
REPLACE()
函数接受三个参数:
source
是您要替换的字符串。old_text
是您要搜索和替换的文本。如果old_text
在字符串中多次出现,则所有出现的位置都将被替换。new_text
是将替换旧文本 (old_text
) 的新文本。
PostgreSQL REPLACE 函数示例
让我们来探索一些使用REPLACE()
函数的示例。
1) 基本 REPLACE 函数示例
请查看以下使用REPLACE()
函数的示例:
SELECT
REPLACE ('ABC AA', 'A', 'Z');
输出:
replace
---------
ZBC ZZ
(1 row)
在此示例中,我们将字符串中的所有字符 ‘A’ 替换为字符 ‘Z’。
以下示例将 URL 中的子字符串tt
替换为xx
:
SELECT
REPLACE (
'https://www.rockdata.net',
'tt',
'xx'
);
输出:
replace
--------------------------
hxxps://www.rockdata.net
(1 row)
2) 将 PostgreSQL REPLACE 函数用于表数据
如果要搜索并替换表列中的子字符串,请使用以下语法:
UPDATE
table_name
SET
column_name = REPLACE(column, old_text, new_text)
WHERE
condition
我们使用示例数据库中的customer
表进行演示:
SELECT
first_name,
last_name,
email
FROM
customer;
输出:
first_name | last_name | email
-------------+--------------+------------------------------------------
Jared | Ely | jared.ely@sakilacustomer.org
Mary | Smith | mary.smith@sakilacustomer.org
Patricia | Johnson | patricia.johnson@sakilacustomer.org
Linda | Williams | linda.williams@sakilacustomer.org
Barbara | Jones | barbara.jones@sakilacustomer.org
Elizabeth | Brown | elizabeth.brown@sakilacustomer.org
Jennifer | Davis | jennifer.davis@sakilacustomer.org
Maria | Miller | maria.miller@sakilacustomer.org
Susan | Wilson | susan.wilson@sakilacustomer.org
...
现在,假设您要更新电子邮件列以将域名sakilacustomer.org
替换为rockdata.net
,请使用以下语句:
UPDATE
customer
SET
email = REPLACE (
email,
'sakilacustomer.org',
'rockdata.net'
);
因为我们省略了 WHERE 子句,所以customer
表中的所有行都被更新。
让我们验证一下是否已进行替换。
SELECT
first_name,
last_name,
email
FROM
customer;
输出:
first_name | last_name | email
-------------+--------------+------------------------------------
Jared | Ely | jared.ely@rockdata.net
Mary | Smith | mary.smith@rockdata.net
Patricia | Johnson | patricia.johnson@rockdata.net
Linda | Williams | linda.williams@rockdata.net
Barbara | Jones | barbara.jones@rockdata.net
Elizabeth | Brown | elizabeth.brown@rockdata.net
Jennifer | Davis | jennifer.davis@rockdata.net
Maria | Miller | maria.miller@rockdata.net
Susan | Wilson | susan.wilson@rockdata.net
...
在本教程中,我们向您展示了REPLACE()
字符串替换函数,搜索子字符串并将其替换为新子字符串。
了解更多
PostgreSQL 教程:字符串函数
PostgreSQL 文档:字符串函数和操作符