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