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