Корректировка подстроки
Синтаксис
   
insert(<строка>, <позиция>, <длина>, <подстрока>)
overlay(<строка>, <подстрока>, <позиция>[, <длина>])

<строка> – выражение типа CHAR, VARCHAR;

<позиция> – выражение целочисленного типа;

<длина> – выражение целочисленного типа;

<подстрока> – выражение типа CHAR, VARCHAR.

Описание

Корректировка подстроки в заданной строке (удаление подстроки или замена подстроки).

Типы данных <строки> и <подстроки> должны быть приводимыми.

Длина <подстроки> не должна быть более 4000.

<Позиция> задает позицию заменяемой подстроки в <строке>. Отсчет начинается с единицы.

<Длина> задает длину заменяемой подстроки в <строке>.

Если <длина> не задана (в функции overlay), используется длина <подстроки>.

<Подстрока> задает значение, вставляемое вместо удаленной подстроки.

Начиная с <позиции>, удаляется <длина> символов, и вместо них вставляются символы <подстроки>.

Количество заменяемых символов может превышать количество удаляемых.

Возвращаемое значение
  1. <Строка> с замененной <подстрокой>.

  2. Код завершения при неправильных значениях аргументов функции.

  3. Если <строка> имеет значение 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;