OVERLAYB

将一个字符串的一部分替换为另一个字符串,并将新的字符串以八位字节值的形式返回。

OVERLAYB 函数将多字节字符串视为八位字节(字节)串,并使用八进制数作为输入和输出的位置及长度说明符。字符串本身是 VARCHAR 类型,但把每个字节视为一个单独的字符串。

行为类型

不可变

语法

OVERLAYB ( input‑string, replace‑string, position [, extent ] )

参数

input‑string
要处理的字符串,类型为 CHAR 或 VARCHAR。
replace‑string
用于替换 input-string 的指定子字符串的字符串,类型为 CHAR 或 VARCHAR。
position
整数 ≥1,指定 input‑string 的第一个八位字节覆盖 replace‑string
extent
整数,指定要使用 replace‑string 覆盖的 input‑string 八位字节的数量。如果省略,则 OVERLAY 使用 replace‑string 的长度。

示例

=> SELECT OVERLAYB('123456789', 'ééé', 2);
 OVERLAYB
----------
 1ééé89
(1 row)
=> SELECT OVERLAYB('123456789', 'ßßß', 2);
 OVERLAYB
----------
 1ßßß89
(1 row)
=> SELECT OVERLAYB('123456789', 'xxx', 2);
 OVERLAYB
-----------
 1xxx56789
(1 row)
=> SELECT OVERLAYB('123456789', 'xxx', 2, 4);
 OVERLAYB
----------
 1xxx6789
(1 row)
=> SELECT OVERLAYB('123456789', 'xxx', 2, 5);
 OVERLAYB
----------
 1xxx789
(1 row)
=> SELECT OVERLAYB('123456789', 'xxx', 2, 6);
 OVERLAYB
----------
 1xxx89
(1 row)