Замена всех подстрок (REPLACE)
Функция
Замена всех подстрок в заданной строке.
Спецификация
::=
::=
::=
Общие правила
-
<Строка>
,<подстрока1>
,<подстрока2>
должны иметь типы данных:CHAR
,VARCHAR
,NCHAR
,NCHAR VARYING
, символьное BLOB-значение. -
Типы данных
<строки>
,<подстроки1>
и<подстроки 2>
должны быть приводимыми. -
Длина
<подстроки1>
,<подстроки2>
не должна быть более 4000. -
Окончательная длина
<строки>
не должна быть более 4000. -
<Подстрока1>
задает удаляемое из<строки>
значение. -
<Подстрока2>
задает вставляемое вместо удаленной<подстроки1>
значение. -
Если
<подстрока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 |
-
Длины
<подстроки1>
и<подстроки2>
в байтах должна быть равны. -
Все аргументы функции могут быть заданы
<SQL-параметром>
, который должен содержать спецификацию типа данных параметра.select replace (? (char(20)), ? (char(5)), ? (char(5))); 11 22 311 55 11 aa |aa 22 3aa 55 |
Возвращаемое значение
-
Исходная <строка>, в которой все вхождения <подстроки1> заменены на <подстроку2>.
-
Если значение <подстроки1> в <строке> не найдено, <строка> возвращается без изменений.
-
Результирующая строка возвращается без концевых пробелов.
-
Если один из аргументов имеет значение NULL, результат будет NULL.
-
Если аргумент <строка> имеет нулевую длину, возвращается пустая строка.
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 |