©
本文档使用
php.cn手册 发布
本节描述那些检查和操作类型为bytea数值的函数和操作符。
SQL定义了一些有特殊语法的字符串函数,在这些函数里使用特殊关键字而不是逗号来分隔 参数。详情参阅Table 9-8。PostgreSQL也提供了一些 使用常用语法进行函数调用的函数版本(参阅Table 9-9)。
Table 9-8. SQL二进制字符串函数和操作符
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
string|| string | bytea | 字符串连接 | E'\\\\Post'::bytea || E'\\047gres\\000'::bytea | \\Post'gres\000 |
octet_length(string) |
int | 二进制字符串的字节数 | octet_length(E'jo\\000se'::bytea) | 5 |
overlay(stringplacingstringfromint[forint]) |
bytea | 替换子串 | overlay(E'Th\\000omas'::bytea placing E'\\002\\003'::bytea from 2 for 3) | T\\002\\003mas |
position(substringinstring) |
int | 指定子串的位置 | position(E'\\000om'::bytea in E'Th\\000omas'::bytea) | 3 |
substring(string[fromint][forint]) |
bytea | 截取子串 | substring(E'Th\\000omas'::bytea from 2 for 3) | h\000o |
trim([both]
bytesfrom
string)
|
bytea | 从string的开头和结尾删除只包含bytes中字节的最长字符串 | trim(E'\\000'::bytea from E'\\000Tom\\000'::bytea) | Tom |
还有一些二进制字符串处理函数可以使用,在Table 9-9列出。 其中有一些是在内部使用,用于实现Table 9-8列出的SQL标准的字符串函数。
Table 9-9. 其它二进制字符串函数
函数 | 返回类型 | 描述 | 示例 | 结果 |
---|---|---|---|---|
btrim(string
bytea,bytesbytea) |
bytea | 从string的开头和结尾删除只包含bytes中字节的最长字符串 | btrim(E'\\000trim\\000'::bytea, E'\\000'::bytea) | trim |
decode(stringtext,
typetext)
|
bytea | 将之前用encode 编码的结果string解码为二进制字符串。参数类型和encode 相同。
|
decode(E'123\\000456', 'escape') | 123\000456 |
encode(stringbytea,
typetext)
|
text | 把二进制字符串编码为ASCII仅表现形式。支持类型有:base64,hex,escape。 | encode(E'123\\000456'::bytea, 'escape') | 123\000456 |
get_bit(string,offset)
|
int | 从字符串中提取位 | get_bit(E'Th\\000omas'::bytea, 45) | 1 |
get_byte(string,offset)
|
int | 从字符串中提取字节 | get_byte(E'Th\\000omas'::bytea, 4) | 109 |
length(string) |
int | 二进制字符串的长度 | length(E'jo\\000se'::bytea) | 5 |
md5(string) |
text | 计算string的MD5散列值,以十六进制方式返回结果。 | md5(E'Th\\000omas'::bytea) | 8ab2d3c9689aaf18 b4958c334c82d8b1 |
set_bit(string,
offset,newvalue)
|
bytea | 设置字符串中的位 | set_bit(E'Th\\000omas'::bytea, 45, 0) | Th\000omAs |
set_byte(string,
offset,newvalue)
|
bytea | 设置字符串中的字节 | set_byte(E'Th\\000omas'::bytea, 4, 64) | Th\000o@as |
get_byte
andset_byte
字节数 以二进制字符串的第一个字节为0字节。
get_bit
andset_bit
位数每个字节的右边位数;例如 位0 至少在第一个字节, 位15最多为第二个字节位.