0


PostgreSQL 查找替换函数

介绍 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()”函数的示例:

SELECT
    REPLACE ('ABC AA', 'A', 'Z');

在此示例中,我们将字符串中的所有字符“A”替换为字符“Z”。

以下示例将 URL 中的子字符串“tt”替换为“xx”:

SELECT
    REPLACE (
        'https://www.zhaoxinsoft.com',
        'tt',
        'xx'
    );

如果要搜索和替换表列中的子字符串,请使用以下语法:

UPDATE 
   table_name
SET 
   column_name = REPLACE(column,old_text,new_text)
WHEREcondition

PostgreSQL REGEXP_REPLACE 函数


如果您需要更高级的匹配方式,您可以使用REGEXP_REPLACE() 函数。

REGEXP_REPLACE() 函数允许您替换与正则表达式匹配的子字符串。 下面说明了REGEX_REPLACE() 函数的语法。

REGEXP_REPLACE(source, pattern, new_text [,flags])

REGEXP_REPLACE() 函数接受四个参数:

  • source 是您将查找与 pattern 匹配的子字符串并将其替换为 new_text 的字符串。 如果未找到匹配项,则源保持不变。

  • pattern 是一个正则表达式。 它可以是任何模式,例如:电子邮件、URL、电话号码等。

  • next_text 是替换子字符串的文本。

  • flags 包含零个或多个单字母标志,用于控制 REGEX_REPLACE() 函数的行为。 例如,i 表示不区分大小写匹配或忽略大小写。 g 代表全局; 如果使用 g 标志,该函数将替换所有匹配模式的子字符串出现。 flags 参数是可选的。

PostgreSQL REGEXP_REPLACE() 函数示例


需要努力和实验才能理解REGEXP_REPLACE() 函数的工作原理。

以下是使用“REGEXP_REPLACE()”函数的示例。

SELECT
    regexp_replace(
        'foo bar foobar barfoo',
        'foo',
        'bar'
    );

在下面的例子中,因为我们使用了 i 标志,它会忽略大小写并用 foo 替换第一次出现的 Bar 或 bar。

SELECT
    regexp_replace(
        'Bar foobar bar bars',
        'Bar',
        'foo',
        'i'
    );

在下面的例子中,我们使用了 g 标志,所有出现的 bar 都被替换为 foo。 请注意,Bar、BAR 或bAR 不会改变。

SELECT
    regexp_replace(
        'Bar sheepbar bar bars barsheep',
        'bar',
        'foo',
        'g'
    );

在下面的示例中,我们同时使用了 g 和 i 标志,因此所有出现的 bar 或 Bar、BAR 等都被替换为 foo。

SELECT
    regexp_replace(
        'Bar sheepbar bar bars barsheep',
        'bar',
        'foo',
        'gi'
    );

\m 表示只匹配每个单词的开头。 在任何情况下,所有以 bar 开头的单词都被 foo 替换。 以 bar 结尾的单词没有改变。

SELECT
    regexp_replace(
        'Bar sheepbar bar bars barsheep',
        '\mbar',
        'foo',
        'gi'
    );

\M 表示仅在每个单词的末尾匹配。 所有以“bar”结尾的单词都被 foo 代替。 以bar开头的词不会被替换。

SELECT
    regexp_replace(
        'Bar sheepbar bar bars barsheep',
        'bar\M',
        'foo',
        'gi'
    );

\m 和 \M 表示在每个单词的开头和结尾都匹配。 在任何情况下,所有以 bar 开头和结尾的单词都被替换为 foo。

SELECT
    regexp_replace(
        'Bar sheepbar bar bars barsheep',
        '\mbar\M',
        'foo',
        'gi'
    );

PostgreSQL TRANSLATE 函数


除了REPLACE() 和REGEXP_REPLACE() 函数,PostgreSQL 还提供了另一个名为TRANSLATE() 的函数用于字符串替换。

给定一个set字符,TRANSLATE()函数用new_set中的字符替换source字符串中匹配set的任何字符。

TRANSLATE(source, set, new_set);

The TRANSLATE() function accepts three parameters:

  • source 是您要搜索和替换的字符串。

  • set 是一组用于匹配的字符。

  • new_set 是一组字符,用于替换与 set 匹配的字符。

请注意,如果 set 的字符比 new_set 多,PostgreSQL 会从 source 字符串中删除 set 中多余的字符。

PostgreSQL TRANSLATE 函数示例

在以下示例中,我们将所有特殊元音转换为正常元音。

SELECTTRANSLATE (
        'LÒ BÓ VÔ XÕ',
        'ÒÓÔÕ',
        'OOOO'
    );

参考下图:


本文转载自: https://blog.csdn.net/u014612521/article/details/128938475
版权归原作者 围城客 所有, 如有侵权,请联系我们删除。

“PostgreSQL 查找替换函数”的评论:

还没有评论