В этом руководстве вы узнаете, как использовать функцию 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;
На следующем рисунке показан частичный вывод:
Как это работает.
- Первый вызов 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() для замены всех вхождений подстроки в строке на новую подстроку.