4.3 二进制数据类型

PostgreSQL提供了二进制(bytea)数据类型用于存储二进制字符串,该数据类型占用存储空间容量为1字节或4字节加上实际的二进制字符串。

4.3.1 二进制数据类型简介

二进制数据类型可以存储不可见的字符,而字符串类型则不能存储不可见的字符。

● 二进制数据类型适用于存储程序员认为是“裸字节”的数据。

● 字符串适用于存储文本。

二进制数据类型支持两种用于输入和输出的外部格式:PostgreSQL的转义格式和十六进制格式。

4.3.2 二进制数据的十六进制格式

十六进制格式将二进制数据编码为字符串,每个字节表示两个十六进制数,最高有效位在前。十六进制字符串以“\x”开头(用以和转义格式区分)。

【举例】:

十六进制格式可以是大写,也可以是小写,在十六进制格式之间可以有空白。

十六进制格式和很多外部应用程序兼容,并且其转换速度要比转义格式更快,因此人们更愿意使用十六进制格式。

4.3.3 二进制数据的转义格式

转义格式是二进制数据类型的传统PostgreSQL格式。它采用将二进制数据表示成ASCII字符序列的方法,而将那些无法用ASCII字符表示的字节转换成特殊的转义语句。

要转义一个字节数值,通常需要将它的数值转换成对应的三位八进制数,并且加两个前导反斜线(\\)。有的字符可以加一个反斜线直接转义,如单引号和反斜线本身,如表4-11所示。

表4-11 二进制数据转义格式