Рядки

REPLACE

Замінює в рядку всі входження одного тексту на інший.

Синтаксис

REPLACE(<текст>, <що замінити>, <на що>)

Шукає в тексті підрядок і замінює кожне його входження, а не лише перше. Щоб прибрати підрядок зовсім, заміни його на порожній рядок ''. Часто використовують щоб почистити дані, наприклад прибрати пробіли з телефонів чи замінити старий домен у посиланнях.

Дані для прикладів

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Ці таблиці вже створено в пісочниці — приклади нижче працюють із ними. Хочеш повторити у своїй базі — скопіюй SQL.

Замінити слово
SELECT REPLACE('I love MySQL', 'MySQL', 'PostgreSQL') AS result;
result
I love PostgreSQL
Кожне входження, а не лише перше
SELECT REPLACE('a-b-c-d', '-', ', ') AS result;
result
a, b, c, d
Телефони без пробілів
SELECT name, phone,
REPLACE(phone, ' ', '') AS compact_phone
FROM employees;
namephonecompact_phone
Emma+44 7700 900123+447700900123
LiamNULLNULL
Olivia+44 7700 900456+447700900456
Noah+44 7700 900789+447700900789
SophiaNULLNULL

Зверни увагу

Регістр важить: REPLACE('Hello', 'hello', 'Hi') нічого не замінить. Без огляду на регістр — REGEXP_REPLACE(<текст>, 'hello', 'Hi', 'gi').

Замінює цілий підрядок, а не окремі символи. Прибрати кілька різних символів за раз допоможе TRANSLATE: TRANSLATE('+44 (0) 7700', '() ', '') дає +4407700.

Якщо хоч один аргумент NULL, результат теж NULL: REPLACE('abc', 'b', NULL).

Схожі функції