Доступные версии документации

Корректировка подстроки
Синтаксис
   
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;
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter