SQL Server Replace()函数

在本教程中,将学习如何使用SQL Server REPLACE()函数通过字符串中的新子字符串替换所有出现的子字符串。

SQL Serer REPLACE函数简介

要使用新子字符串替换字符串中所有出现的子字符串,请使用REPLACE()函数,如下所示:

REPLACE(input_string, substring, new_substring);

在这个语法中:

  • input_string是要搜索的任何字符串表达式。
  • substring是要替换的子字符串。
  • new_substring是替换字符串。

REPLACE()函数返回一个新字符串,其中出现所有子字符串被new_substring替换。 如果任何参数为NULL,则返回NULL

SQL Server REPLACE()函数示例

下面举一些使用REPLACE()函数例子来了解它如何工作的。

1. REPLACE()函数使用带文字字符串

以下示例使用REPLACE()函数指定字符串中的"tea"替换为"coffee"

SELECT 
    REPLACE(
        'It is a good tea at the famous tea store.', 
        'tea', 
        'coffee'
    ) result;

执行上面查询语句,得到以下结果:

replace()函数

从输出中可以看出,所有出现的'tea'都被'coffee'所取代。

2. 对表列使用REPLACE()函数

在此示例中,将使用示例数据库中的sales.customers表:
customers表结构

此示例调用REPLACE()函数两次以新格式格式化电话号码:

SELECT    
    first_name, 
    last_name, 
    phone, 
    REPLACE(REPLACE(phone, '(', ''), ')', '') phone_formatted
FROM    
    sales.customers
WHERE phone IS NOT NULL
    ORDER BY 
        first_name, 
        last_name;

执行上面查询语句,得到以下结果:

replace()函数

这是怎么运作的?

第一次调用:REPLACE(phone, '(', '')用空格替换字符'('电话号码,(916) 381-6003 -> 916) 381-6003
第二个调用重用第一个调用的结果,并用空格替换字符')',例如,916) 381-6003 -> 916 381-6003

3. 使用REPLACE()函数来纠正表中的数据

REPLACE()函数通常用于更正表中的数据。 例如,用新的链接替换过时的链接。

以下是语法:

UPDATE 
    table_name
SET
    column_name = REPLACE(column_name, 'old_string','new_string')
WHERE
    condition;

例如,要将电话号码的区号从916更改为917,请使用以下语句:

UPDATE
    sales.customers
SET
    phone = REPLACE(phone,'(916)','(917)')
WHERE
    phone IS NOT NULL;

注意,应该在执行替换之前备份表。

在本教程中,学习了如何使用SQL Server REPLACE()函数将字符串中所有出现的子字符串替换为新的子字符串。


上一篇: SQL Server字符串函数 下一篇: SQL Server Window函数