Перейти к содержимому
Последнее обновление

REPLACE

Описание​

Функция REPLACE используется для замены всех вхождений указанной подстроки в строке новой подстрокой. Эта функция заменяет все совпадающие вхождения подстроки в строке, выполняя глобальную замену.

Отличие от функции REPLACE_EMPTY:

  • REPLACE() заменяет указанную подстроку, включая пустые строки
  • REPLACE_EMPTY() предназначена для замены пустых значений или пустых строк указанным значением

Синтаксис​

REPLACE(<str>, <old>, <new>)

Параметры​

ПараметрОписание
<str>Исходная строка, в которой выполняется замена. Тип: VARCHAR
<old>Подстрока, которую необходимо заменить. Если она не найдена в str, замена не выполняется. Тип: VARCHAR
<new>Новая подстрока, заменяющая old. Тип: VARCHAR

Возвращаемое значение​

Возвращает значение типа VARCHAR, представляющее новую строку после замены.

Правила замены:

  • Заменяются все вхождения подстроки old в строке
  • Замена учитывает регистр
  • Если old является пустой строкой, возвращается исходная строка (операция не выполняется)
  • Если new является пустой строкой, все вхождения подстроки old удаляются

Особые случаи:

  • Если любой параметр равен NULL, возвращается NULL
  • Если str является пустой строкой, возвращается пустая строка
  • Если old является пустой строкой, возвращается исходная строка str (без замены)
  • Если old не найдена в str, возвращается исходная строка str

Примеры​

  1. Базовая операция замены
SELECT REPLACE('hello world', 'world', 'universe');
+---------------------------------------------+
| REPLACE('hello world', 'world', 'universe') |
+---------------------------------------------+
| hello universe |
+---------------------------------------------+
  1. Замена нескольких совпадений
SELECT REPLACE('apple apple apple', 'apple', 'orange');
+------------------------------------------------+
| REPLACE('apple apple apple', 'apple', 'orange') |
+------------------------------------------------+
| orange orange orange |
+------------------------------------------------+
  1. Удаление подстроки (замена пустой строкой)
SELECT REPLACE('banana', 'a', '');
+---------------------------+
| REPLACE('banana', 'a', '') |
+---------------------------+
| bnn |
+---------------------------+
  1. Обработка значений NULL
SELECT REPLACE(NULL, 'old', 'new'), REPLACE('test', NULL, 'new'), REPLACE('test', 'old', NULL);
+------------------------------+------------------------------+------------------------------+
| REPLACE(NULL, 'old', 'new') | REPLACE('test', NULL, 'new') | REPLACE('test', 'old', NULL) |
+------------------------------+------------------------------+------------------------------+
| NULL | NULL | NULL |
+------------------------------+------------------------------+------------------------------+
  1. Замена символов UTF-8
SELECT REPLACE('ṭṛì ḍḍumai test ṭṛì ḍḍumannàri', 'ṭṛì', 'replaced');
+-----------------------------------------------------------+
| REPLACE('ṭṛì ḍḍumai test ṭṛì ḍḍumannàri', 'ṭṛì', 'replaced') |
+-----------------------------------------------------------+
| replaced ḍḍumai test replaced ḍḍumannàri |
+-----------------------------------------------------------+
  1. Граничные случаи с пустыми строками: если str пуста, возвращается пустая строка; если old пуста, str возвращается без изменений; если new пуста, удаляются все совпадения
SELECT REPLACE('', 'old', 'new'), REPLACE('test', '', 'new'), REPLACE('test', 'old', '');
+---------------------------+----------------------------+----------------------------+
| REPLACE('', 'old', 'new') | REPLACE('test', '', 'new') | REPLACE('test', 'old', '') |
+---------------------------+----------------------------+----------------------------+
| | test | test |
+---------------------------+----------------------------+----------------------------+
  1. Замена учитывает регистр (совпадает только hello в нижнем регистре)
SELECT REPLACE('Hello HELLO hello', 'hello', 'hi');
+---------------------------------------------+
| REPLACE('Hello HELLO hello', 'hello', 'hi') |
+---------------------------------------------+
| Hello HELLO hi |
+---------------------------------------------+
  1. old отсутствует: str возвращается без изменений
SELECT REPLACE('hello world', 'xyz', 'abc');
+--------------------------------------+
| REPLACE('hello world', 'xyz', 'abc') |
+--------------------------------------+
| hello world |
+--------------------------------------+
  1. Повторяющиеся неперекрывающиеся совпадения
SELECT REPLACE('123123123', '123', 'ABC');
+------------------------------------+
| REPLACE('123123123', '123', 'ABC') |
+------------------------------------+
| ABCABCABC |
+------------------------------------+