b0x*_*d1n 1 arrays postgresql information-schema
我正在开发一个项目,该项目直接从数据库收集有关架构的信息。我可以data_type使用 获取该列的information_schema.columns,它会告诉我它ARRAY是否是一个。我还可以通过查询来获取 的基础类型(integer等bytea),如下所述:ARRAYinformation_schema.element_types
https://www.postgresql.org/docs/9.1/static/infoschema-element-types.html
我的问题是我还需要知道数组有多少维,是否是integer[],或者integer[][]例如。有谁知道有什么方法可以做到这一点?Google 在这里并没有提供太多帮助,希望更熟悉 Postgres 规范的人可以引导我走向正确的方向。
首先,数组的维数并不反映在 Postgres 的数据类型中。语法integer[][]是可以容忍的,但它实际上只是integer[]内部的。
请阅读此处的手册。
这意味着同一数组类型(同一表列)内的维度可以不同。
要获取特定数组值的实际尺寸:
SELECT array_dims(my_arr); -- [1:2][1:3]
Run Code Online (Sandbox Code Playgroud)
或者只获取维数:
SELECT array_ndims(my_arr); -- 2
Run Code Online (Sandbox Code Playgroud)
还有更多的数组函数可以满足类似的需求。请参阅手册中的数组函数表。
有关的:
如果需要在列中强制执行特定维度,请添加CHECK约束。要强制使用二维数组:
ALTER TABLE tbl ADD CONSTRAINT tbl_arr_col_must_have_2_dims
CHECK (array_ndims(arr_col) = 2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1677 次 |
| 最近记录: |