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

问题描述 投票:13回答:2

在Postgres中有一种名为bytea的数据类型

Postgres文档就在这里:http://www.postgresql.org/docs/9.0/static/datatype-binary.html

我无法理解何时使用它 - 我也不能真正理解这种数据类型的用途。

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

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

谢谢。

postgresql definition bytea
2个回答
15
投票

我认为文档在bytea和text之间的差异是相当明确的:

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

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

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

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


1
投票

VARBINARY,相当于PG中的BYTEA,可用于存储OAuth访问令牌。

create table oauth_access_token (
  token_id VARCHAR(255),
  token BYTEA,
  .......
)
© www.soinside.com 2019 - 2024. All rights reserved.