Замена всех подстрок
Функция
Замена всех подстрок в заданной строке.
Спецификация
::=::=::=Общие правила
-
< Строка >,< подстрока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 |