Доступные версии документации

Замена всех подстрок

Функция

Замена всех подстрок в заданной строке.

Спецификация
 
<синтаксис>::=
Общие правила
  1. <Строка>, <подстрока1>, <подстрока2> должны иметь типы данных: CHAR, VARCHAR, NCHAR, NCHAR VARYING, символьное BLOB-значение.

  2. Типы данных <строки>, <подстроки1> и <подстроки 2> должны быть приводимыми.

  3. Длина <подстроки1>, <подстроки2> не должна быть более 4000.

  4. Окончательная длина <строки> не должна быть более 4000.

  5. <Подстрока1> задает удаляемое из <строки> значение.

  6. <Подстрока2> задает вставляемое вместо удаленной <подстроки1> значение.

  7. Если <подстрока2> не задана, по умолчанию используется пустая строка (т.е. в этом случае происходит фактически удаление <подстроки1>.

    create or replace table tst (str char(20));
    insert into tst values ('123456789abcdef');
    select replace(str, '123','321') from tst;
    |321456789abcdef     |
    select replace(str, '123') from tst;
    |456789abcdef        |

  8. Длины <подстроки1> и <подстроки2> в байтах должна быть равны.

  9. Все аргументы функции могут быть заданы <SQL-параметром>, который должен содержать спецификацию типа данных параметра.

    select replace  (? (char(20)), ? (char(5)), ? (char(5)));
    11 22 311 55
    11
    aa
    |aa 22 3aa 55        |
Возвращаемое значение
  1. Исходная <строка>, в которой все вхождения <подстроки1> заменены на <подстроку2>.

  2. Если значение <подстроки1> в <строке> не найдено, <строка> возвращается без изменений.

  3. Результирующая строка возвращается без концевых пробелов.

  4. Если один из аргументов имеет значение NULL, результат будет NULL.

  5. Если аргумент <строка> имеет нулевую длину, возвращается пустая строка.

    select replace('','1','2');
Примеры
select replace('123452367238','23','abcdd');
| 1abcdd45abcdd67abcdd8 |
select replace('123452367238','23','a');
| 1a45a67a8 |

Удаление всех вхождений подстроки:

select replace('123452367238','23', '');
| 145678 |
select replace('123452367238','bb','abc');
| 123452367238 |
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter