Замена всех подстрок (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 |