二进制串函数和操作符#

二进制串函数和操作符

本节描述那些检查和操作类型为bytea的值的函数和操作符。

SQL定义了一些使用关键字而不是逗号来分割参数的串函数。详情请见。PostgreSQL也提供了这些函数使用常规函数调用语法的版本(参阅)。

备注

注意

本页中显示的示例结果假设服务器参数bytea_output 被设置为escape(传统PostgreSQL格式)。

表 SQL二进制串函数和操作符

函数

返回类型

描述

例子

结果

string ||string

bytea

串连接

‘\Post’::bytea || ‘047gres\000’::bytea

\Post‘gres000

octet_length(string)

int

二进制串中的字节数

octet_length(‘jo\000se ‘::bytea)

5

overlay(string placing string from int [for int ])

bytea

替换子串

overlay(‘Th\00 0omas’::byt ea placing ‘002003’: :bytea from 2 for 3)

T\002\003mas

position( substring in

string)

int

指定子串的位置

position(’000om’ ::bytea in ‘Th000omas ‘::bytea)

3

substring(string[from int ] [for int ])

bytea

提取子串

substring(‘Th000omas’::bytea from 2 for 3)

h\000o

trim( [both] bytes from string)

bytea

从 string 的开头 或结尾删除 只包含出现 在 bytes 中字节的最长串

trim(’000001’::bytea from ‘ 000Tom001 ‘::bytea)

Tom

还有一些二进制串处理函数可以使用,在列出。 其中有一些是在内部使用,用于实现列出的 SQL 标准串函数。

表 其他二进制串函数

函数

返回类型

描述

例子

结果

btrim(string bytea , bytes bytea )

bytea

从 string 的开头 或结尾删除 只由出现在bytes 中字节组 成的最长串

btrim (’\000trim001’::bytea , ‘000001 ‘::bytea)

trim

decode(string text ,

format text )

bytea

从 st ring 中 的文本表示 解码二进制 数据。format 的参数和在 encode 中一样。

decode(‘12 3\000456’, ‘escape’)

123\000456

encode(data bytea ,

format text )

text

将二进制 数据编码为 一个文本表 示。支持的 格式有:base64 、 hex 、 esc ape 。escape 将零字节和 高位组字节 转换为八进 制序列( n nn )和 双反斜线。

encode (‘123\00045 6’::bytea, ‘escape’)

123\000456

get_bit (string , offset)

int

从串中抽取位

get_bit(‘Th\ 000omas’::bytea, 45)

1

get_byte (string, offset)

int

从串中抽取字节

get_byte(‘Th \000omas’:: bytea, 4)

109

length (string)

int

二进制串的长度

length(‘jo000se ‘::bytea)

5

md5 (string)

text

计算 stri ng 的MD 5哈希码,以 十六进制形 式返回结果

md5(‘Th\000omas ‘::bytea)

8ab2d3c9689a af18b4958c3 34c82d8b1

set_bit (string, offset , newvalue )

bytea

设置串中的位

set_bit(‘Th\000 omas’::bytea , 45, 0)

Th\000omAs

set_byte (string, offset , newvalue)

bytea

设置串中的字节

set_byte(‘Th\000 omas’::bytea , 4, 64)

Th\000o@as

sha224(bytea)

bytea

SHA-224哈希

sha224 (‘abc’)

\x23097d223405d8 228642a477b da255b32aad bce4bda0b3f 7e36c9da7

sha256(bytea)

bytea

SHA-256哈希

sha256 (‘abc’)

\xba7816bf8f0 1cfea414140 de5dae2223b 00361a39617 7a9cb410ff6 1f20015ad

sha384(bytea)

bytea

SHA-384哈希

sha384 (‘abc’)

\xcb00753f45 a35e8bb5a03 d699ac65007 272c32ab0ed ed1631a8b60 5a43ff5bed8 086072ba1e7 cc2358baeca 134c825a7

sha512(bytea)

bytea

SHA-512哈希

sha512 (‘abc’)

\xddaf35a19 3617abacc41 7349ae20413 112e6fa4e89 a97ea20a9ee ee64b55d39a 2192992a274 fc1a836ba3c 23a3feebbd4 54d4423643c e80e2a9ac94 fa54ca49f

get_byteset_byte把一个二进制串中的一个字节计数为字节 0。get_bitset_bit在每一个字节中从右边起计数位;例如位 0 是第一个字节的最低有效位,而位 15 是第二个字节的最高有效位。

注意由于历史原因,函数md5返回的是一个十六进制编码的text值,而SHA-2函数返回类型bytea。可以使用函数encodedecode在两者之间转换,例如encode(sha256('abc'), 'hex')可以得到一个十六进制编码的文本表示。

参见中的聚集函数string_agg以及中的大对象函数。