Функция overlay() в PostgreSQL используется для замены подстроки строки другой подстрокой. Эта функция полезна, когда вам нужно изменить часть строки, вставив или заменив определенные символы в заданной позиции.
Синтаксис – Функция Overlay() в PostgreSQL
OVERLAY(string PLACING replacement FROM start [FOR length])
string:
Исходная строка, подлежащая изменению
replacement:
Строка, которая заменит часть исходной строки.
start:
Позиция в исходной строке, где начнется замена.
length(オプション):
Количество символов в исходной строке для замены. Если не указано, заменяющая строка будет вставлена в указанную позицию.
Примеры
- Простой пример: замена подстроки
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».
Результат:
