Функция REPLACE SQL-сервера

В этом руководстве вы узнаете, как использовать функцию SQL Server REPLACE() для замены всех вхождений подстроки новой подстрокой в строке.

Обзор функции SQL Server REPLACE

Чтобы заменить все вхождения подстроки в строке новой подстрокой, используйте функцию REPLACE() следующим образом:

REPLACE(input_string, substring, new_substring);

В этом синтаксисе:

  • input_string — любое строковое выражение для поиска.
  • подстрока — подстрока, которую необходимо заменить.
  • new_substring — это заменяющая строка.

Функция REPLACE() возвращает новую строку, в которой все вхождения подстроки
заменяются на new_substring. Возвращает NULL, если какой-либо аргумент равен NULL.

Примеры функции SQL Server REPLACE()

Давайте рассмотрим несколько примеров использования функции REPLACE(), чтобы понять, как она работает.

A) Использование функции REPLACE() с литеральными строками

В следующем примере функция REPLACE() используется для замены чая на кофе в строке «Это хороший чай в известном чайном магазине».:

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

Вот что получилось:

result
-------------
It is a good coffee at the famous coffee store.
(1 row affected)

Как видно из результатов, все упоминания слова «чай» были заменены словом «кофе».

Б) Использование функции REPLACE() со столбцами таблицы

В этом примере мы будем использовать таблицу sales.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;

На следующем рисунке показан частичный вывод:

Пример функции SQL Server REPLACE

Как это работает.

  • Первый вызов REPLACE(phone, '(', '') заменяет символ '(' в номере телефона на пробел, например,(916) 381-6003 -> 916) 381-6003
  • Второй вызов повторно использует результат первого вызова и заменяет символ «)» пробелом, например, 916) 381-6003 -> 916 381-6003.

C) Использование функции 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() для замены всех вхождений подстроки в строке на новую подстроку.

Мирослав С.

Автор статей, ИБ-специалист