什么是数据类型bytea以及何时使用它?

时间:2015-12-28 02:16:57

标签: postgresql definition bytea

在Postgres中有一种名为bytea

的数据类型

Postgres文档适用于此: http://www.postgresql.org/docs/9.0/static/datatype-binary.html

我无法理解何时使用此功能 - 我也无法真正理解此数据类型的用途。

我多次遇到这个词bytea并开始怀疑自己“他们似乎希望我明白这一点......也许我应该知道它是什么。”

如果有人可以给出一个简单的定义,以及我可能会使用它的某些情况,那将是非常有用的。

感谢。

2 个答案:

答案 0 :(得分:13)

我认为文档在 bytea text 之间的差异上相当清楚:

  

二进制字符串以两种方式与字符串区分开来。首先,二进制字符串特别允许存储零值的八位字节和其他不可打印的字符串。八位字节(通常是在32到126范围之外的八位字节)。字符串不允许零八位字节,并且还禁止根据数据库的所选字符集编码而无效的任何其他八位字节值和八位字节值序列。其次,对二进制字符串的操作处理实际字节,而字符串的处理取决于区域设置。简而言之,二进制字符串适用于存储程序员认为是"原始字节"的数据,而字符串适合存储文本。

http://www.postgresql.org/docs/9.0/static/datatype-binary.html

...它与内容是否是" text"有关。 (取决于您已应用于服务器配置的区域设置和国际化设置以及您运行它的操作系统)与"八位字节的数组" (8位二进制值的序列---通常称为"字节")。

(术语"字节"和术语"八位字节"之间有一些技术上的区别 - 因为,从历史上看,使用了一些平台和计算设备"字节&#34 ;使用奇偶校验和/或停止位,而术语"八位字节"总是意味着8位;引入的术语是为了阐明网络协议的规范和文档。

答案 1 :(得分:1)

VARBINARY与PG中的BYTEA等效,可用于存储OAuth访问令牌。

create table oauth_access_token (
  token_id VARCHAR(255),
  token BYTEA,
  .......
)