暂无图片
暂无图片
4
暂无图片
暂无图片
暂无图片

PostgreSQL征途:数据类型之二进制数据类型

0008.jpg

二进制数据类型

  • bytea数据类型允许存储二进制字符串;
名字 存储空间 描述
bytea 1或4字节加上实际的二进制字符串 变长的二进制字符串
  • 二进制串是一个八位位组(或字节)的序列;
  • 二进制串和字符串的区别
    • 二进制串明确允许存储零值的字节以及其它“不可打印的”字节(通常是位于十进制范围32到126之外的字节)。字符串不允许零字节,并且也不允许那些对于数据库的选定字符集编码是非法的任何其它字节值或者字节值序列。
    • 对二进制串的操作会处理实际上的字节,而字符串的处理和取决于区域设置。 简单说,二进制字串适用于存储那些程序员认为是“裸字节”的数据,而字符串适合存储文本。
  • bytea类型支持两种用于输入和输出的格式:“hex”(十六进制)格式和PostgreSQL的历史的“escape”格式。在输入时这两种格式总是会被接受。输出格式则取决于配置参数bytea_output,其默认值为hex(十六进制)。
  • SQL标准定义了一种不同的二进制串类型, 叫做BLOB或者BINARY LARGE OBJECT。其输入格式和bytea不同,但是提供的函数和操作符大多一样。
  • “十六进制”格式将二进制数据编码为每个字节2个十六进制位,最高有效位在前。整个串以序列\x开头(用以和转义格式区分)。
  • Bytea字节默认被输出为hex格式。如果你把bytea_output改为escape,“不可打印的”字节会被转换成与之等效的三位八进制值并且前置一个反斜线。大部分“可打印的”字节被输出为它们在客户端字符集中的标准表示形式。
postgres=# SELECT '\000'::bytea; bytea ------- \x00 (1 row) postgres=# SELECT ''''::bytea; bytea ------- \x27 (1 row) postgres=# SELECT '\\'::bytea; bytea ------- \x5c (1 row) postgres=# SELECT '\001'::bytea; bytea ------- \x01 (1 row) postgres=# SET bytea_output = 'escape'; SET postgres=# SELECT 'abc \153\154\155 \052\251\124'::bytea; bytea ---------------- abc klm *\251T (1 row) postgres=# SELECT '\134'::bytea; bytea ------- \\ (1 row) postgres=# SELECT '\001'::bytea; bytea ------- \001 (1 row) postgres=# SELECT '\176'::bytea; bytea ------- ~ (1 row)

pg0134.png

最后修改时间:2023-12-07 09:16:39
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论