6.5. 二进制字串函数和操作符

本节描述那些检查和操作二进制数值的函数和操作符. 这个环境里的字串意味着类型 BYTEA 的数值.

SQL 定义了一些有特殊语法的字串函数, 在这些函数里使用特殊关键字而不是逗号来分隔参数. 详情请见 Table 6-9. 一些函数也实现了使用常用语法进行函数调用的方法. (参阅 Table 6-10.)

Table 6-9. SQL 二进制字串函数和操作符

函数函数类型描述例子结果
string || string bytea 字串连接 '\\\\Post'::bytea || '\\047greSQL\\000'::bytea\\Postgre'SQL\000
octet_length(string)integer二进制字串中的字节数目octet_length('jo\\000se'::bytea)5
position(substring in string)integer指定子字串的位置position('\\000om'::bytea in 'Th\\000omas'::bytea)3
substring(string [from integer] [for integer])bytea 抽取子字串 substring('Th\\000omas'::bytea from 2 for 3)h\000o
trim([both] characters from string) byteastring 的开头/结尾/两端删除 只包含 characters 的最长的字串. trim('\\000'::bytea from '\\000Tom\\000'::bytea)Tom
get_byte(string, offset)integer 从字串中抽取字节。 get_byte('Th\\000omas'::bytea, 4)109
set_byte(string, offset)bytea 设置字串中的字节。 set_byte('Th\\000omas'::bytea, 4, 64)Th\000o@as
get_bit(string, offset)integer 从字串中抽取位。 get_bit('Th\\000omas'::bytea, 45)1
set_bit(string, offset)bytea 设置字串中的位。 set_bit('Th\\000omas'::bytea, 45, 0)Th\000omAs

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

Table 6-10. 其它二进制字串函数

函数返回类型描述例子结果
btrim(string bytea, trim bytea)byteastring 的开头和结尾删除(截断) 只包含在 trim 里面的字符的最长的字串. btrim('\\000trim\\000'::bytea,'\\000'::bytea)trim
length(string)integer 二进制字串的长度 length('jo\\000se'::bytea)5
encode(string bytea, type text) text 把二进制字串编码为只包含 ASCII 的表现形式. 类型是∶base64,hex,escape. encode('123\\000456'::bytea, 'escape')123\000456
decode(string text, type text) bytea 把前面用encode()编码的放在 string 里的 二进制字串解码.参数类型和encode()里的一样. decode('123\\000456', 'escape')123\000456