Корректировка подстроки
Синтаксис
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;