Корректировка подстроки
Синтаксис
insert(< строка >, < позиция >, < длина >, < подстрока >)
overlay(< строка >, < подстрока >, < позиция >[, < длина >])
< строка >
– выражение типа CHAR, VARCHAR;
< позиция >
– выражение целочисленного типа;
< длина >
– выражение целочисленного типа;
< подстрока >
– выражение типа CHAR, VARCHAR.
Описание
Корректировка подстроки в заданной строке (удаление подстроки или замена подстроки).
Типы данных < строки >
и < подстроки >
должны быть приводимыми.
Длина < подстроки >
не должна быть более 4000.
< Позиция >
задает позицию заменяемой подстроки в < строке >
. Отсчет начинается с единицы.
< Длина >
задает длину заменяемой подстроки в < строке >
.
Если < длина >
не задана (в функции overlay), используется длина < подстроки >
.
< Подстрока >
задает значение, вставляемое вместо удаленной подстроки.
Начиная с < позиции >
, удаляется < длина >
символов, и вместо них вставляются символы < подстроки >
.
Количество заменяемых символов может превышать количество удаляемых.
Возвращаемое значение
-
< Строка >
с замененной< подстрокой >
. -
Код завершения при неправильных значениях аргументов функции.
-
Если
< строка >
имеет значение NULL, результат будет NULL.
Примеры
1) формирование из строки 12345 строки 12**5 line:="12345"; new_line:=insert(line,3,2,"**"); // 12**5 2) формирование из строки 12345 строки 125 line:="12345"; new_line:=insert(line,3,2,""); // 125 3) формирование из строки 12345 строки 15ab line:="12345"; new_line:=insert(insert(line, 2, 3, ""), len(trim(insert(line, 2, 3, ""))) + 1, 2, "ab"); // 15ab 4) замена строки 12345 на строку abc line:="12345"; new_line:=trim(insert(line,1,len(line),""))+"abc"; 5) create or replace procedure tst_overlay() result int for debug declare var line char(50); code line:=overlay("1234567890","abc", 4, 3); -- 123abc7890 line:=overlay("1234567890","abcde", 6, 3); --12345abcde90 line:=overlay("1234567890","abcde", 6, 5); -- 12345abcde line:=overlay("1234567890","abc", 10); -- 123456789abc line:=overlay("1234567890","abc",2,6); -- 1abc890 return 0; end;