数据库与 SQL 工具

PostgreSQL 数组解析与时间间隔检查

粘贴一个原始数组或 interval 值,检查结构、维度与字段,不执行数据库查询。

PostgreSQL 数组解析

PostgreSQL 原始值

JSON 结构报告

数据仅在当前浏览器中解析,不上传、不连接数据库,也不发起网络请求。

输入选项

粘贴原始值,不含 SQL 外层引号或类型转换。数组非空值保留为字符串,时间间隔字段分别输出。

最多 65,536 字符 · 10,000 元素 · 6 维 · 秒最多 6 位小数

维度:2 · 元素:6 · NULL:1

PostgreSQL 数组解析适合排查驱动返回值、日志片段或导出单元格中的花括号文本。直接按逗号拆分,遇到元素内部的逗号、引号或反斜杠时就会破坏原来的结构。

先用示例观察缺失值、文本“NULL”和空字符串的差别。检查时间间隔时,请先确认来源数据库的输出样式,同一处负号在不同样式下可能影响不同字段。

为什么使用 PostgreSQL 数组解析

下界也属于数组信息

PostgreSQL 数组解析会把每个维度的长度、上下界和嵌套值一起列出。数组从零或负数开始时,这些坐标会保留在元数据中,不会因为导出成 JSON 就被悄悄改成零起点。

两行三列的数组保留分组,缺失值标记与带引号的文本格子明显区分

日历字段与时钟字段分开

一个月没有固定的秒数。interval 结果分别保留月数、天数和时间部分的微秒,即使三个字段的正负号不同也不强行归一,方便核对来源值是否被驱动误转成普通时长。

时间间隔拆成月份日历、单日格子和精细时钟三个独立部分

先核对容易忽略的语义

01

切换类型不会覆盖输入

在编辑器下方选择数组或时间间隔,再选择分隔符或输出样式。切换只更换解析规则,保留原文;示例按钮先预览当前模式的内容,确认后才替换。

02

先看维度,再看正负号

默认示例的第一维下界为零。请核对 JSON 中的 dimensions 与 nullCount;sql_standard 样式只有开头一个负号时,负号可能继续作用于后面的天数和时间字段。

03

控制结果更新时机

自动解析会等待最后一次修改后的 350 毫秒。关闭后可点解析按钮或按 Ctrl/Cmd+Enter。输入一变就禁用导出;长报告每次显示 100 行,复制和下载始终包含完整结果。

结构与字段保持准确

多维数组不猜元素类型

PostgreSQL 数组转 JSON 保留数值外观的字符串,例如 001 或超大整数,不丢前导零或精度。多维数组必须是矩形,各行长度不一致时直接报错,不补空值,也不自动拉平。

把引号与转义一起理解

数组字面量扫描器识别双引号元素、转义引号、受保护的分隔符和空白。未加引号且未转义的 NULL 变成 null,而“NULL”、转义后的 NULL 和空字符串仍分别作为文本保留。

四种样式独立解析

interval 解析提供 postgres、postgres_verbose、sql_standard 和 iso_8601 四个入口。月份、天数等字段只接受整数,秒最多六位小数;输出使用精确整数计算,以十进制字符串表示三个字段。

支持范围与输入限制

只输入内层值,不输入 SQL
数组使用 {...},前面可带维度声明;时间间隔输入一个原始值。SQL 语句、ARRAY 构造器、外层单引号、E-string、类型转换和字段限定符均不接受。工具不连接数据库,不执行查询,也不读取文件或 URL。
检查结构,不验证数据库元素类型
默认分隔符是逗号,box 风格数组可选分号。声明的上下界必须有效且匹配实际形状;全空的嵌套数组归一为零维空数组。不查询元素 OID,不提供自定义分隔符或 array_nulls=off 模式。
时间间隔采用明确的语法子集
请使用所选样式对应的输出形式。小数月份、天数、小时和分钟、无限值、ISO 替代格式、未知单位及无单位的非零数字均被拒绝。秒超过六位小数会报错,不进行舍入;也不提供总秒数或 Temporal 转换。
超限就停止,不输出截断结果
单次最多 65,536 个 JavaScript 字符、10,000 个数组元素和六个维度。interval 的月与日字段需在有符号 32 位整数范围内,微秒需在有符号 64 位范围内。任一错误都会阻止导出。

PostgreSQL 数组解析常见问题

PostgreSQL 提示 malformed array literal 怎么办?

常见原因是花括号不配对、引号未闭合、末尾多了分隔符,或粘贴了外层 SQL。工具会给出错误所在行列并标记输入行。请先取出花括号包围的原始数组文本,再检查错误附近的引号与反斜杠,不要直接粘贴整条 INSERT。

PostgreSQL 数组中的 NULL 是怎么处理的?

未加引号且未转义的 NULL 不区分大小写,解析后是 JSON null。“NULL”是文本,“”是空字符串。报告还会统计空值数量。整个 SQL NULL 不是这里接受的数组字面量;如果表达空数组,请使用 {}。

为什么插入多维数组会出现 malformed array literal 错误?

PostgreSQL 要求各个维度的长度一致。例如 {{a,b},{c}} 的两行分别有两个和一个元素,会被拒绝。工具不会补齐缺少的单元格或拉平结构;请修正源数据,再确认前面的维度声明与实际长度相符。

PostgreSQL COPY 中数组元素含双引号时应该怎样转义?

COPY 或 CSV 外层字段与数组本身可能各有一层转义。这里只处理原始数组层:双引号元素中的双引号和反斜杠,要在前面加反斜杠。请先解除外层 CSV 或 SQL 字符串编码,再把内层值粘贴到工具中。

为什么 PostgreSQL interval 转成秒后的数值不符合预期?

月份与天数属于日历单位,不总能直接折成固定秒数。不同月份长度不同,跨夏令时的一天也可能不是二十四小时。报告保留三个独立字段;如果需要实际经过的秒数,应结合具体起止时间计算,而不是只看字面量。

怎样把 1 day 01:30:00 表示成 25:30:00?

在工具之外可以用 SQL 改写显示,但这会把天数字段并入小时。这里的 1 day 01:30:00 保留 days="1" 和 microseconds="5400000000";单独的 25:30:00 则是 days="0" 和 microseconds="91800000000",两种结构不会混为一谈。

还有疑问?

检查下一个字面量

用 PostgreSQL 数组解析核对边界和元素,或切换到时间间隔模式检查三个字段,确认结果后再导出 JSON。

每次检查一个字面量,不自动修复输入。