PostgreSQL 数组定义指南:array 构造器、数组字面量与多维数组
文档教程知识库【免费下载链接】til:memo: Today I Learned项目地址https://gitcode.com/gh_mirrors/ti/til点击查看免费下载本文围绕 TIL 仓库中 postgres/defining-arrays.md 记录的核心要点展开系统讲解 PostgreSQL 中数组的两种定义方式——array[...]构造器语法与数组字面量语法并延伸覆盖数组列建表、下标读取、多维数组以及配套的切片、聚合、计数等常用操作。读完本文你将能够熟练地在 psql 会话中定义一维与多维数组、向数组列写入数据并掌握围绕数组的一系列实战技巧。一维数组用array[...]构造器直接定义在 PostgreSQL 中最直观的定义数组的方式是使用array语法即array[...]构造器。将元素以逗号分隔写在一对方括号内即可 select array[a,b,c]; array --------- {a,b,c}这里有两个值得注意的细节array[...]是 PostgreSQL 内建的数组构造器语法元素之间用逗号分隔无需任何引号包裹整体psql 展示数组结果时统一采用{elem1,elem2,elem3}的“花括号字面量”形态这与下文要讲的数组字面量输入语法保持一致——也就是说array[a,b,c]与字面量{a,b,c}表达的是同一份数据。数组列建表、插入与下标读取如果目标不是一次性的 SELECT而是把数组真正存进表里就需要先声明一个数组类型的列。声明方式是在普通类型名后追加一对方括号例如integer[]表示“整数数组列” create temp table favorite_numbers(numbers integer[]); CREATE TABLE向数组列插入数据时可以直接使用数组字面量语法即把一整组元素以花括号形式包起来作为单个值传入 insert into favorite_numbers values( {7,3,9} ); INSERT 0 1随后可以通过下标来读取数组中的某个元素。PostgreSQL 数组的下标从1开始因此numbers[2]取到的是第二个元素3 select numbers[2] from favorite_numbers; numbers --------- 3结合仓库中的 postgres/getting-a-slice-of-an-array.md 可以看到PostgreSQL 数组“下标从 1 起、区间含端点”的语义是一以贯之的切片语法[下界:上界]同样遵循 1-based 且含端点inclusive的规则。如果读取的下标越界PostgreSQL 会返回 NULL 而不是报错这也是数组下标使用中需要留意的行为差异。多维数组嵌套的array构造器PostgreSQL 原生支持多维数组。定义二维数组的方式是把多个一维array构造器再嵌套进外层array构造器每一行用一对[...]表示select array[[1,2,3],[4,5,6],[7,8,9]] telephone; telephone --------------------------- {{1,2,3},{4,5,6},{7,8,9}}多维数组在字面量/输出形态上表现为“花括号层层嵌套”外层花括号包含三行每行内部又是一个花括号括起来的三个元素。这里的telephone是结果列的别名与数组定义本身无关只是演示了如何给结果列命名。同样的嵌套规则适用于更高的维度——三维数组即三层array构造器嵌套、输出时三层花括号嵌套。需要理解的是array[[1,2,3],[4,5,6],[7,8,9]]这类写法在定义上要求内层各数组长度一致才能构成规则的矩形多维结构。对多维数组的切片与取数多维数组同样支持下标读取与切片。读取二维数组某个元素时按下标维度逐层指定即可而切片操作在仓库文档 postgres/getting-a-slice-of-an-array.md 中有更完整的演示例如从 3×3 的二维数组中截取一个 2×2 的矩形子块 select (array[[1,2,3],[4,5,6],[7,8,9]])[2:3][1:2]; array --------------- {{4,5},{7,8}}该文档特别强调一个易错点对array[...]构造器做切片时必须给整个数组构造器加上一层圆括号即写成(array[...])[下界:上界]否则切片语法会被解析器误解而导致出错。数组在 PostgreSQL 类型体系中的位置数组在 PostgreSQL 中并不是一个孤立的数据类型而是内建的一种类型类别。仓库中的 postgres/types-by-category.md 指出PostgreSQL 的众多类型按类别category划分数组Array、布尔Boolean、字符串String、数值Numeric、复合Composite等各自属于一类并且每个类别在pg_type目录中都有对应的类别代码。实践中任何一种基础类型如integer、text、date都会自动存在对应的数组版本声明列时在类型名后追加[]如integer[]、text[]即可引用——这是 PostgreSQL 相比许多其他数据库在数组支持上的一个重要特性即数组可以基于任何类型自由组合包括用户自定义类型。围绕数组定义的配套操作掌握了数组的“定义”之后仓库中还有若干与之直接配套的 TIL 笔记可以在实战中组合使用把一列聚合为数组postgres/aggregate-a-column-into-an-array.md 演示了用聚合函数array_agg将查询结果的某一列聚合成一个数组例如select array_agg(num) from generate_series(1,5) as num;会得到{1,2,3,4,5}非常适合把明细行压缩成数组后交给应用层处理。统计数组元素个数postgres/count-the-number-of-items-in-an-array.md 对比了两种计数方式array_length(array, 维度)需要显式指定在第几维上取长度cardinality(array)则直接返回整个数组的总元素数多维数组也把各层元素全部累加使用更省心。由两个数组构造 hstorepostgres/create-hstore-from-two-arrays.md 展示了hstore(array[one,two,three], array[1,2,3])这种用“键数组 值数组”组合出键值对映射的用法且两个数组长度必须一致否则会抛出arrays must have same bounds错误。这些笔记共同勾勒出 PostgreSQL 数组能力的完整使用链路定义本文→ 存取与切片 → 聚合生成 → 统计与转换。易错点小结下标从 1 开始arr[1]是第一个元素越界读取返回 NULL。切片含端点arr[2:4]包含第 2、3、4 个元素且 1-based。切片需加圆括号对array[...]构造器切片时必须写(array[...])[下界:上界]。字面量形态统一插入数组列使用{...}字面量当数组中包含逗号、空格或空字符串时文本型元素需用双引号包裹如{a,b,c}以免被字面量解析器误切分。多维数组需规则矩形用嵌套array构造器定义多维数组时各内层数组长度应保持一致。延伸阅读本文主体内容源自 postgres/defining-arrays.md与其配套的数组主题笔记均位于仓库postgres/目录下可按需查阅postgres/getting-a-slice-of-an-array.md数组切片与二维数组矩形截取postgres/aggregate-a-column-into-an-array.mdarray_agg列聚合postgres/count-the-number-of-items-in-an-array.mdarray_length与cardinalitypostgres/create-hstore-from-two-arrays.md双数组构造 hstorepostgres/types-by-category.mdPostgreSQL 类型类别体系赞分享文档教程知识库【免费下载链接】til:memo: Today I Learned项目地址https://gitcode.com/gh_mirrors/ti/til点击查看免费下载相关推荐freeCodeCamp Basic JavaScript 精讲数组嵌套与多维数组Nest one Array within Another ArrayfreeCodeCamp Basic JavaScript 精讲数组嵌套与多维数组Nest one Array within Another Array前端后端教育如何高效使用std::arrayC固定大小数组的终极指南如何高效使用std::arrayC固定大小数组的终极指南 在现代C编程中 std::array 作为一种固定大小的数组容器为开发者提供了兼具C风格文档教程Pixelle-VideoAI短视频引擎安装、核心功能与进阶调优Pixelle VideoAI短视频引擎安装、核心功能与进阶调优 Pixelle Video 是一个开源的 AI 短视频生成引擎输入一个主题它自动完成文案人工智能AI 应用音视频媒体生成创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

C语言顺序表实现通讯录:从底层原理到完整项目源码

C语言顺序表实现通讯录:从底层原理到完整项目源码

1. 序:为什么我建议你用顺序表来实现通讯录 先交代一下背景。作为一个被C语言虐过无数遍、又在工作里靠C语言吃饭的人,我对数据结构这门课的感情很复杂——当年学的时候觉得"这玩意儿有什么用",直到后来做嵌入式开发和系统工具&…

2026/10/11 3:36:13 阅读更多 →
从零跑通wanAndroid客户端工程:Android源码拆解与二次开发指南

从零跑通wanAndroid客户端工程:Android源码拆解与二次开发指南

简介:DBxiaocao_wanAndroid_19980_1754926874833.zip 是一份 wanAndroid 安卓项目源码压缩包,面向 Android 初学者、进阶开发者以及需要参考完整工程结构的毕设人员。从项目名可推断,其定位偏向聚合资讯、学习与生活服务的综合性应用&#xf…

2026/10/10 5:53:56 阅读更多 →
Boost.Asio实战:异步网络编程、Strand并发控制与批量写库

Boost.Asio实战:异步网络编程、Strand并发控制与批量写库

去年接手一个物联网网关项目,要把上千台终端设备的实时数据接进来,再写进时序数据库。网络层选型时我几乎没有犹豫就定了Boost.Asio。不是说裸socket和epoll不行,而是连接数量上去之后,手动维护状态机、处理半包、跨平台迁移&…

2026/10/11 3:36:22 阅读更多 →

最新新闻

跨平台SSL证书导入脚本:Windows与Linux批量部署指南

跨平台SSL证书导入脚本:Windows与Linux批量部署指南

简介:这份资源提供在Windows与Linux系统中导入SSL证书的自动化脚本,面向需要为Web服务配置HTTPS通信的运维人员与系统管理员。压缩包内共2个文件,分别为Linux平台使用的sh脚本与Windows平台使用的bat脚本,包体仅578B,轻…

2026/10/17 16:31:36 阅读更多 →
viewer.min.js图片查看器集成指南:从初始化到避坑实践

viewer.min.js图片查看器集成指南:从初始化到避坑实践

简介:viewer.min.js 是一款轻量级 JavaScript 图像查看器库,面向需要在前端实现图片缩放、旋转、平移等交互效果的前端开发者。资源包以 viewerjs-main 命名,共包含 177 个文件,整体打包 3.14MB,其中以 121 个 js 文件…

2026/10/17 16:31:36 阅读更多 →
信呼OA系统开源部署指南:中小团队低成本的协同办公方案

信呼OA系统开源部署指南:中小团队低成本的协同办公方案

简介:信呼协同办公OA系统v1.8.6提供了一套开源的企业办公自动化解决方案,适合中小型企业和研发团队使用,能够将流程审批、任务协作、日程管理、移动办公等常见需求整合到一个平台中。这个版本在之前基础上优化了系统稳定性和操作体验&#xf…

2026/10/17 16:31:36 阅读更多 →
Flutter蓝牙开发实战:协议设计、插件选型与跨平台适配

Flutter蓝牙开发实战:协议设计、插件选型与跨平台适配

1. 蓝牙协议在 Flutter 项目中的整体设计思路1.1 为什么要在移动端项目里引入蓝牙能力做移动端项目时间长了,总会碰到一类需求:设备不在云端,也不走 Wi-Fi,而是靠蓝牙近距离通信。比如智能手环同步步数、体脂秤回传数据、便携打印…

2026/10/17 16:31:36 阅读更多 →
油猴脚本从入门到实战:安装配置与高效使用指南

油猴脚本从入门到实战:安装配置与高效使用指南

1. 先搞懂油猴插件到底是什么说到油猴插件,很多人的第一反应是:听说过,但一直没搞懂。以为它是什么灰色地带的黑科技,或者觉得那是程序员才折腾的东西。今天把话说透,油猴插件/脚本就是一个运行在浏览器里的轻量小助手…

2026/10/17 16:31:36 阅读更多 →
TortoiseGit绿色对勾消失?从图标覆盖到注册表抢位的完整排查指南

TortoiseGit绿色对勾消失?从图标覆盖到注册表抢位的完整排查指南

那天我像往常一样打开资源管理器,突然发现整个工作目录的文件夹都变成了最普通的黄色小文件夹——TortoiseGit 的绿色对勾不见了。第一反应是仓库坏了,赶紧打开终端跑了个 git status ,结果文件状态一切正常,也没有任何报错。那…

2026/10/17 16:30:36 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →