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