OVERLAY
Replaces part of a string with another string and returns the new string value as a VARCHAR.
Behavior type
Immutable if using OCTETS, Stable otherwise
Syntax
OVERLAY ( input-string PLACING replace-string FROM position [ FOR extent ] [ USING { CHARACTERS | OCTETS } ] )
Arguments
- input-string
- The string to process, of type CHAR or VARCHAR.
- replace-string
- The string to replace the specified substring of input-string, of type CHAR or VARCHAR.
- position
- Integer ≥1 that specifies the first character or octet of input-stringto overlayreplace-string.
- extent
- Integer that specifies how many characters or octets of input-stringto overlay withreplace-string. If omitted, OVERLAY uses the length ofreplace-string.For example, compare the following calls to OVERLAY: - 
OVERLAY omits FORclause. The number of characters replaced in the input string equals the number of characters in replacement stringABC:dbadmin=> SELECT OVERLAY ('123456789' PLACING 'ABC' FROM 5); overlay ----------- 1234ABC89 (1 row)
- 
OVERLAY includes a FORclause that specifies to replace four characters in the input string with the replacement string. The replacement string is three characters long, so OVERLAY returns a string that is one character shorter than the input string:=> SELECT OVERLAY ('123456789' PLACING 'ABC' FROM 5 FOR 4); overlay ---------- 1234ABC9 (1 row)
- 
OVERLAY includes a FORclause that specifies to replace -2 characters in the input string with the replacement string. The function returns a string that is two characters longer than the input string:=> SELECT OVERLAY ('123456789' PLACING 'ABC' FROM 5 FOR -2); overlay ---------------- 1234ABC3456789 (1 row)
 
- 
- USING CHARACTERS | OCTETS
- Specifies whether OVERLAY uses characters (default) or octets.
Examples
=> SELECT OVERLAY('123456789' PLACING 'xxx' FROM 2);
  overlay
-----------
 1xxx56789
(1 row)
=> SELECT OVERLAY('123456789' PLACING 'XXX' FROM 2 USING OCTETS);
 overlayb
-----------
 1XXX56789
(1 row)
=> SELECT OVERLAY('123456789' PLACING 'xxx' FROM 2 FOR 4);
 overlay
----------
 1xxx6789
(1 row)
=> SELECT OVERLAY('123456789' PLACING 'xxx' FROM 2 FOR 5);
 overlay
---------
 1xxx789
(1 row)
=> SELECT OVERLAY('123456789' PLACING 'xxx' FROM 2 FOR 6);
 overlay
---------
 1xxx89
(1 row)