【PostgreSQL】从零开始:(十九)数据类型-二进制数据类型

news2026/4/2 9:50:01

二进制数据类型

名字存储大小描述
bytea1 或 4 个字节加上实际的二进制字符串可变长度二进制字符串

二进制字符串是八位字节(或字节)的序列。二进制字符串与字符串的区别有两种。首先,二进制字符串专门允许存储值为零的八位字节和其他“不可打印”的八位字节(通常是十进制范围 32 到 126 之外的八位字节)。字符串不允许零个八位字节,并且还不允许任何其他八位字节值和根据数据库所选字符集编码无效的八位字节值序列。其次,对二进制字符串的操作处理实际字节,而字符串的处理取决于区域设置。简而言之,二进制字符串适用于存储程序员认为为“原始字节”的数据,而字符串适用于存储文本。
该类型支持两种输入和输出格式:“十六进制”格式和 PostgreSQL 的历史“转义”格式。这两者在输入时始终被接受。输出格式取决于配置参数 bytea_output;默认值为十六进制。(请注意,十六进制格式是在 PostgreSQL 9.0 中引入的;早期版本和某些工具无法理解它。

十六进制格式bytea

“十六进制”格式将二进制数据编码为每字节 2 个十六进制数字,最有效的半字节在前。整个字符串前面是序列(以区别于转义格式)。在某些情况下,可能需要通过将初始反斜杠加倍来转义(参见第 4.1.2.1 节)。对于输入,十六进制数字可以是大写或小写,并且数字对之间允许有空格(但不能在数字对内或起始序列中)。十六进制格式与广泛的外部应用程序和协议兼容,并且它的转换速度往往比转义格式快,因此最好使用它。\x

SET bytea_output = 'hex';

SELECT '\xDEADBEEF'::bytea;
   bytea
------------
 \xdeadbeef

转义格式bytea

“转义”格式是该类型的传统 PostgreSQL 格式。它采用的方法将二进制字符串表示为 ASCII 字符序列,同时将那些无法表示为 ASCII 字符的字节转换为特殊的转义序列。如果从应用程序的角度来看,将字节表示为字符是有意义的,那么这种表示会很方便。但在实践中,它通常是令人困惑的,因为它模糊了二进制字符串和字符串之间的区别,而且所选择的特定转义机制有些笨拙。因此,对于大多数新应用程序,可能应避免使用这种格式。bytea

以转义格式输入值时,必须对某些值的八位字节进行转义,而所有八位字节值都可以转义。通常,要转义八位字节,请将其转换为其三位数八进制值,并在其前面加上反斜杠。反斜杠本身(八进制十进制值 92)也可以用双反斜杠表示。下显示了必须转义的字符,并在适用的情况下给出了替代转义序列。

十进制八位字节值描述 转义输入表示十六进制表示
0零八位字节‘\000’‘\000’::bytea
39单引号‘’‘‘或’\047’‘’‘’::bytea
92反斜杠‘\‘或’\134’‘\’::bytea
0 到 31 和 127 到 255“不可打印”八位字节‘\xxx’(八进制值)‘\001’::bytea \x01

对不可打印八位字节进行转义的要求因区域设置而异。在某些情况下,您可以让它们跳过

单引号必须加倍的原因是,对于 SQL 命令中的任何字符串文字都是如此。通用字符串文字分析器使用最外层的单引号,并将任何一对单引号减少为一个数据字符。输入函数看到的只是一个单引号,它将其视为纯数据字符。但是,输入函数将反斜杠视为特殊行为,显示的其他行为由该函数实现。

Bytea默认情况下,八位字节以格式输出。如果将 bytea_output更改为hexescape ,则“不可打印”八位字节将转换为其等效的三位数八进制值,并在其前面加上一个反斜杠。大多数“可打印”八位字节由其在客户端字符集中的标准表示形式输出,

SET bytea_output = 'escape';

SELECT 'abc \153\154\155 \052\251\124'::bytea;
     bytea
----------------
 abc klm *\251T

十进制值为 92(反斜杠)的八位字节在输出中。

十进制八位字节值描述 转义输入表示十六进制表示
92反斜杠|‘\134’::bytea\
0 到 31 和 127 到 255“不可打印”八位字节\xxx(八进制值‘\001’::bytea
32 到 126“可打印”八位字节客户端字符集表示‘\176’::bytea

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1325446.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch常见面试题

文章目录 1.简单介绍下ES?2.简单介绍当前可以下载的ES稳定版本?3.安装ES前需要安装哪种软件?4.请介绍启动ES服务的步骤?5.ES中的倒排索引是什么?6. ES是如何实现master选举的?7. 如何解决ES集群的脑裂问题8…

本地文件内容搜索神器AnyTXT Searcher如何搭建与远程访问

文章目录 前言1. AnyTXT Searcher1.1 下载安装AnyTXT Searcher 2. 下载安装注册cpolar3. AnyTXT Searcher设置和操作3.1 AnyTXT结合cpolar—公网访问搜索神器3.2 公网访问测试 4. 固定连接公网地址 前言 你是否遇到过这种情况,异地办公或者不在公司,想找…

ubuntu qt 源码编译

官方源码下载地址 : 源码地址 选择要下载的版本 dmg结尾的是MacOS系统里使用的Qt库,qt-everywhere-opensource-src-4.7.0是Qt源码包,有zip和tar.gz两个压缩格式的,两个内容是一样的,只是zip一般在Windows下比较流行,…

【100个Cocos实例】快要圣诞节了,给大家支个招!

引言 Mask遮罩组件的一些简单实例 在游戏开发中常常需要在UI界面上展示玩家的头像或者Logo,通常都会是正方形。 偶尔也会有一些奇形怪状的需求,例如五边形、六边形、心形等等。 本文将介绍一下在Cocos游戏开发中Mask遮罩组件的一些简单实例&#xff…

九州未来向开放原子开源基金会捐赠OpenV2X,共建繁荣开源生态

12月16日,以“一切为了开发者”为主题的开放原子开发者大会在无锡成功举办。会上,九州未来将OpenV2X车路协同开源项目正式捐赠给开放原子开源基金会,并签署项目捐赠协议,通过开源共创的方式,携手开源伙伴共同打造车路协…

[微服务 ]微服务集成中的3个常见缺陷,以及如何避免它们

微服务风靡一时。他们有一个有趣的价值主张,即在与多个软件开发团队共同开发的同时,将软件快速推向市场。因此,微服务是在扩展您的开发力量的同时保持高敏捷性和快速的开发速度。 简而言之,您将系统分解为微服务。分解并不是什么新…

RLAIF方法与传说中的函数‘Q‘,揭露OpenAI那不为人知的Qstar计划

早晨刚起来,看群里新哥转了这个帖子: 帖子不长,但是基本是爆炸类的新闻了!这个应该也就是Sam之前被董事会诟病的所谓隐瞒了的真相! 在讲解这个帖子之前,先要普及2个概念: 1- RLAIF: 不是TGIF,虽然今天确实是周五 RLAIF是Google今年9月新出来的论文,论文…

智能优化算法应用:基于堆优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于堆优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于堆优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.堆优化算法4.实验参数设定5.算法结果6.参考文…

tcpdump抓包技巧

1. 常见的抓包工具 1.1 tcpdump 是Linux下常用的抓包工具,它是一个命令行工具,可以抓取和Wireshark类似的数据,而且保存的数据包,可以放到Wireshark中分析。如果你的Linux服务器需要抓包分析问题,它是一个非常好的选择…

算法基础之约数之和

约数之和 核心思想&#xff1a; #include<iostream>#include<algorithm>#include<vector>#include<unordered_map>using namespace std;typedef long long LL;const int N 110 , mod 1e97;int main(){int n;cin>>n;unordered_map<int,int&…

使用opencv实现图像中几何图形检测

1 几何图形检测介绍 1.1 轮廓(contours) 什么是轮廓&#xff0c;简单说轮廓就是一些列点相连组成形状、它们拥有同样的颜色、轮廓发现在图像的对象分析、对象检测等方面是非常有用的工具&#xff0c;在OpenCV 中使用轮廓发现相关函数时候要求输入图像是二值图像&#xff0c;这…

Python学习笔记(六):函数的多返回值、函数的多种参数使用形式、匿名函数、文件的读取操作、文件的写入 、文件的追加

目录 一、函数的多返回值 二、函数的多种参数使用形式 2.1位置参数 2.2关键字参数 2.3缺省参数 2.4不定长参数 三、匿名函数 3.1 函数作为参数传递 3.2 函数的定义 3.3 匿名函数定义语法&#xff1a; 四、文件的读取操作 4.1 open&#xff08;&#xff09;打开函数…

【WPF.NET开发】样式和模板

本文内容 示例样式ControlTemplateDataTemplate触发器视觉状态共享资源和主题 Windows Presentation Foundation (WPF) 样式设置和模板化是指一套功能&#xff0c;这套功能使开发者和设计者能够为其产品创建极具视觉表现力的效果和一致的外观。 自定义应用的外观时&#xff0…

【精选】Lombok概述及常用注解使用方法

Lombok概述 Lombok项目是一个java库&#xff0c;它可以自动插入到编辑器和构建工具中&#xff0c;增强java的性能。不需要再写getter、setter或equals方法&#xff0c;只要有一个注解&#xff0c;就有一个功能齐全的构建器、自动记录变量等等。 以前的Java项目中&#xff0c;充…

2002年AMC8数学竞赛中英文真题典型考题、考点分析和答案解析

今天是2023年12月21日&#xff0c;距离2024年的AMC8正式考试倒计时已不足30天了。 六分成长继续和您一起&#xff0c;从历年的真题中来了解考试题型、考试形式、对知识点查漏补缺。如果您有任何关于AMC8比赛的任何问题都可以问我&#xff0c;关于题目的解析也可以交流。敲黑板…

Ansible的脚本----playbook剧本

Playbook组成部分 tasks 任务&#xff1a;包含要在目标主机上执行的操作&#xff0c;使用模块定义这些操作。每个任务都是一个模块的调用。Variables 变量&#xff1a;存储和传递数据。变量可以自定义&#xff0c;可以在playbook当中定义全局变量&#xff0c;可以外部传参。T…

ARM GIC(二)中断分类

一、中断状态 对于每一个中断而言,有以下4个状态: inactive:中断处于无效状态 pending:中断处于有效状态,但是cpu没有响应该中断 active:cpu在响应该中断 active and pending:cpu在响应该中断,但是该中断源又发送中断过来 以下是中断状态的转移图。至于图中的转移…

基于Redis限流(aop切面+redis实现“令牌桶算法”)

令牌桶算法属于流量控制算法&#xff0c;在一定时间内保证一个键&#xff08;key&#xff09;的访问量不超过某个阈值。这里的关键是设置一个令牌桶&#xff0c;在某个时间段内生成一定数量的令牌&#xff0c;然后每次访问时从桶中获取令牌&#xff0c;如果桶中没有令牌&#x…

U-MixFormer:用于高效语义分割的类unet结构的混合注意力Transformer

论文&#xff1a; 代码&#xff1a;GitHub - RecklessRonan/MuSE 感觉这篇比较优雅无痛涨点欸.....最近要期末了没时间看文章和做实验了&#xff08;摊 摘要 语义分割在Transformer架构的适应下取得了显著的进步。与Transformer的进步并行的是基于CNN的U-Net在高质量医学影…

数据可视化---直方图

内容导航 类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统…