本文介绍了PolarDB PostgreSQL版(兼容Oracle)支持的二进制类型。

二进制字符串可以存储以下数据类型。

表 1. 二进制大对象
名称存储大小描述
BINARY二进制字符串的长度。定长二进制字符串,长度介于1和8300之间。
BLOB实际二进制字符串加1字节(如果二进制字符串小于127字节)或4字节(如果二进制字符串大于等于127字节)。可变长度的二进制字符串。
VARBINARY二进制字符串的长度。可变长度的二进制字符串,长度介于1和8300之间。
BYTEA1或4字节加上实际的二进制字符串。变长的二进制字符串。
二进制串是一个8位字节(或字节的序列)。与字符串相比,二进制串有两点不同:
  • 二进制串允许存放值为0的8位字节和其他无法打印显示的八位字节(定义的范围超过32~126)。
  • 在二进制串上进行的操作实际是处理字节,与之相反的是对字符串的编码和处理取决于本地设置。

BYTEA类型

BYTEA类型支持两种输入输出的外部格式:hex格式和PostgreSQL的历史escape格式。
  • hex格式将二进制数据编码为每字节2位十六进制数字, 最重要的四位(半字节)放在开始。整条字符串以\x开始 (与转义格式相区别)。
  • escape格式是一种传统的PostgreSQL格式。它采用以ASCII字符序列来表示二进制串的方法,同时将那些无法表示成ASCII字符的二进制串转换成特殊的转义序列。从应用的角度看,如果代表字节的字符有意义,则这种表示方法会很方便。但实际上,这样做会模糊二进制字符串和字符字符串之间的区别,从而造成困扰, 同时筛选出的转义机制会显得很臃肿。因此对一些新应用应该恰当的避免这种格式。