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函數