二进制字符串函数和操作符 ========================= 本节描述那些检查和操作类型为bytea数值的函数和操作符。 SQL定义了一些字符串函数, 在这些函数里使用关键字而不是逗号来分隔参数。详情请见下表。一些函数可以通过常用的函数调用语法使用(详见表.其他的二进制字符串函数)。 **表.SQL 二进制字符串函数和操作符** .. list-table:: :widths: auto :header-rows: 1 * - 函数 - 返回类型 - 描述 - 例子 - 结果 * - string || string - bytea - 字符串连接 - E'\\Oushu'::bytea || E'\\047DB'::bytea - \\ \\Oushu'DB\\000 * - 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 * - octet_length(string) - int - 二进制字符串的字节数 - octet_length( E'jo\\ \\000se'::bytea) - 5 * - position(substring in string) - int - 特定子字符串的位置 - position(E'\\ \\000om'::bytea in E'Th\\ \\000omas'::bytea) - 3 * - 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 * - substring(string [from int] [for int]) - bytea - 提取子字符串 - substring(E'Th\\ \\000omas'::bytea from 2 for 3) - h\\000o * - trim([both] bytes from string) - bytea - 从string的开头和结尾删除只包含 bytes中字节的最长字符串 - trim(E'\\ \\000'::bytea from E'\\ \\000Tom\\ \\000'::bytea) - Tom 还有一些可用的二进制字符串处理函数,在下表中列出。其中有一些是在内部使用,用于实现上表列出的SQL标准的字符串函数。 **表.其他二进制字符串函数** .. list-table:: :widths: auto :header-rows: 1 * - 函数 - 返回类型 - 描述 - 例子 - 结果 * - btrim(string bytea, bytes bytea) - bytea - 从string的开头和结尾删除只包含bytes 中字节的最长的字符串 - btrim(E'\\ \\000trim\\ \\000'::bytea, E'\\ \\000'::bytea) - trim * - encode(string bytea, type text) - text - 把二进制数据编码为文本表现形式。支持的格式:base64, hex, escape。 - encode(E'123\\ \\000456'::bytea, 'escape') - 123\\000456 * - length(string) - int - 二进制串的长度 - length(E'jo\\ \\000se'::bytea) - 5 * - md5(string) - text - 计算string的MD5散列值,以十六进制方式返回结果。 - md5(E'Th\\ \\000omas'::bytea) - 8ab2d3c9689aaf18b4958c334c82d8b1