Ciekawą funkcją w PostgreSQL jest funkcja OVERLAY() dzięki której możemy podmienić jeden ciąg znaków na drugi.
Zwracany typ: TEXT
PostgreSQL OVERLAY() składnia
OVERLAY([łańcuch_główny] placing [łańcuch_do_podmiany] from [pozycja_od_której_zaczynamy_nadpisywanie] for [ile_znaków_nadpisujemy])
Przykład zastosowania funkcji OVERLAY()
Zamień w zdaniu 'Ala ma kota.' słowo 'kota' na 'psa'.
SELECT
OVERLAY('Ala ma kota.' placing 'psa' from 8 for 4)
Wynik
Ala ma psa.
Zwóć uwagę, że zastąpiliśmy ciąg znaków składający się z czterech znaków, ciągiem znaków składającym się z trzech znaków. Funkcja działa jakby dwu etapowo. Pierwszy etap to wycięcie z łańcucha głównego wycinka który chcemy zastąpić, a drugi etap to wstawienie w to miejsce ciągu który chcemy do łańcucha głównego wstawić.
W pierwszym przykładzie w miejsce dłuższego wycinka wstawiliśmy krótszy ciąg. Spróbujmy teraz odwrotnie. Zamieńmy teraz słowo 'psa' na 'kota'.
SELECT
OVERLAY('Ala ma psa.' placing 'kota' from 8 for 3)
Wynik
Ala ma kota.
Myślę, że już wszystko jasne.