Функция overlay() в PostgreSQL используется для замены подстроки строки другой подстрокой. Эта функция полезна, когда вам нужно изменить часть строки, вставив или заменив определенные символы в заданной позиции.

Синтаксис – Функция Overlay() в PostgreSQL

OVERLAY(string PLACING replacement FROM start [FOR length])

string: Исходная строка, подлежащая изменению

replacement: Строка, которая заменит часть исходной строки.

start: Позиция в исходной строке, где начнется замена.

length(オプション): Количество символов в исходной строке для замены. Если не указано, заменяющая строка будет вставлена ​​в указанную позицию.

Примеры

  1. Простой пример: замена подстроки
SELECT OVERLAY('Astrology' PLACING 'nomy' FROM 6 ) AS result;

Объяснение:Подстрока, начинающаяся с позиции 6 («logy»), заменяется на «nomy».

Результат:

2. Пример с указанной длиной: замена определенного количества символов

SELECT OVERLAY('abcdef' PLACING 'XY' FROM 3 FOR 2) AS result;

Объяснение:Начиная с позиции 3, два символа («cd») заменяются на «XY».

Результат:

3. Вставьте строку, не удаляя символы:

Если вы хотите вставить подстроку, не удаляя никаких символов из исходной строки, вы можете присвоить условию FOR значение 0:

SELECT OVERLAY('abcdef' PLACING 'XYZ' FROM 4) AS result;

Объяснение:Строка «XYZ» вставляется в позицию 4, не заменяя никаких символов, начиная с позиции 4. В 4-ю позицию вставляется «XYZ» без замены уже существующего «d» в 4-й позиции.

Результат:

Чтобы использовать функцию overlay() для столбца в PostgreSQL:

Вы можете использовать функцию overlay() для замены строкового значения столбца другим строковым значением.

Давайте используем название таблицы «documents».

SELECT *, OVERLAY(text_content PLACING 'swift' FROM 6 FOR 5) AS updated_text 
FROM documents;

Объяснение:В первом ряду «quick» заменено на «swift», а во втором ряду «along» заменено на «swift».

Результат: