| Firebird Documentation Index → Firebird 2.5 Language Ref. Update → Internal functions → OVERLAY() |
![]() |
Find a more recent version at Firebird 5.0 Language Reference: OVERLAY()
Available in: DSQL, PSQL
Added in: 2.1
Description: Overwrites part of a string with another string. By default, the number of characters removed from the host string equals the length of the replacement string. With the optional fourth argument, the user can specify a different number of characters to be removed.
Result type: VARCHAR or BLOB
Syntax:
OVERLAY (stringPLACINGreplacementFROMpos[FORlength])
This function supports BLOBs of any length.
If
stringorreplacementis a BLOB, the result is a BLOB. Otherwise, the result is a VARCHAR(n) withnthe sum of the lengths ofstringandreplacement.As usual in SQL string functions,
posis 1-based.If
posis beyond the end ofstring,replacementis placed directly afterstring.If the number of characters from
posto the end ofstringis smaller than the length ofreplacement(or than thelengthargument, if present),stringis truncated atposandreplacementplaced after it.The effect of a “FOR 0” clause is that
replacementis simply inserted intostring.If any argument is
NULL, the result isNULL.If
posorlengthis not a whole number, bankers' rounding (round-to-even) is applied, i.e. 0.5 becomes 0, 1.5 becomes 2, 2.5 becomes 2, 3.5 becomes 4, etc.
Examples:
overlay ('Goodbye' placing 'Hello' from 2) -- returns 'GHelloe'
overlay ('Goodbye' placing 'Hello' from 5) -- returns 'GoodHello'
overlay ('Goodbye' placing 'Hello' from 8) -- returns 'GoodbyeHello'
overlay ('Goodbye' placing 'Hello' from 20) -- returns 'GoodbyeHello'
overlay ('Goodbye' placing 'Hello' from 2 for 0) -- r. 'GHellooodbye'
overlay ('Goodbye' placing 'Hello' from 2 for 3) -- r. 'GHellobye'
overlay ('Goodbye' placing 'Hello' from 2 for 6) -- r. 'GHello'
overlay ('Goodbye' placing 'Hello' from 2 for 9) -- r. 'GHello'
overlay ('Goodbye' placing '' from 4) -- returns 'Goodbye'
overlay ('Goodbye' placing '' from 4 for 3) -- returns 'Gooe'
overlay ('Goodbye' placing '' from 4 for 20) -- returns 'Goo'
overlay ('' placing 'Hello' from 4) -- returns 'Hello'
overlay ('' placing 'Hello' from 4 for 0) -- returns 'Hello'
overlay ('' placing 'Hello' from 4 for 20) -- returns 'Hello'
When used on a BLOB, this function may need to load the entire object into memory. This may affect performance if huge BLOBs are involved.
See also: REPLACE()
| Firebird Documentation Index → Firebird 2.5 Language Ref. Update → Internal functions → OVERLAY() |