什么是数据类型 bytea,我什么时候使用它?

What is the datatype bytea and when would I use it?

在 Postgres 中有一个名为 bytea

的数据类型

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

我不明白什么时候会用到这个——我也不能真正理解这个数据类型的用途。

我已经多次遇到这个术语 bytea 并且开始对自己感到疑惑“他们似乎希望我理解这个......也许我应该找出它是什么。”

它的简单定义是什么以及我何时可能使用它的一些情况?

我认为文档对 byteatext 之间的区别相当清楚:

Binary strings are distinguished from character strings in two ways. First, binary strings specifically allow storing octets of value zero and other "non-printable" octets (usually, octets outside the range 32 to 126). Character strings disallow zero octets, and also disallow any other octet values and sequences of octet values that are invalid according to the database's selected character set encoding. Second, operations on binary strings process the actual bytes, whereas the processing of character strings depends on locale settings. In short, binary strings are appropriate for storing data that the programmer thinks of as "raw bytes", whereas character strings are appropriate for storing text.

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

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

(术语 "byte" 和术语 "octet" 之间存在一些技术上的区别 -- 因为,从历史上看,一些平台和计算设备使用 "bytes" 与奇偶校验 and/or 停止位,而术语 "octets" 始终表示恰好 8 位;引入该术语是为了阐明网络协议的规范和文档)。

VARBINARY,相当于Postgres中的BYTEA,可用于存储JWT个访问令牌。

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