专业只做数据库实训和认证的品牌机构

微信公众号新浪微博
免费咨询电话:400-0909-964
申请试听
当前位置: 网站首页 > postgresql > pg概述 > PostgreSQL教程-sql语法-值表达式-数组构造器

PostgreSQL教程-sql语法-值表达式-数组构造器

文章来源: 更新时间:2020/1/15 14:05:22

在线老师点击咨询:

最新学讯:2018年近期OCP认证正在报名中,因考试人员较多请尽快报名获取最近考试时间,报名费用请联系在线老师,甲骨文官方认证,报名从速!

我要咨询

PostgreSQL教程-sql语法-值表达式-数组构造器

4.2.12. 数组构造器

一个数组构造器是一个能构建一个数组值并且将值用于它的成员元素的表达式。一个简单的数组构造器由关键词ARRAY、一个左方括号[、一个用于数组元素值的表达式列表(用逗号分隔)以及最后的一个右方括号]组成。例如:

SELECT ARRAY[1,2,3+4];

array

---------

{1,2,7}

(1 row)

默认情况下,数组元素类型是成员表达式的公共类型,使用和UNION或CASE结构(见第 10.5 节)相同的规则决定。你可以通过显式将数组构造器造型为想要的类型来重载,例如:

SELECT ARRAY[1,2,22.7]::integer[];

array

----------

{1,2,23}

(1 row)

这和把每一个表达式单独地造型为数组元素类型的效果相同。关于造型的更多信息请见第 4.2.9 节。

多维数组值可以通过嵌套数组构造器来构建。在内层的构造器中,关键词ARRAY可以被忽略。例如,这些语句产生相同的结果:

SELECT ARRAY[ARRAY[1,2], ARRAY[3,4]];

array

---------------

{{1,2},{3,4}}

(1 row)

SELECT ARRAY[[1,2],[3,4]];

array

---------------

{{1,2},{3,4}}

(1 row)

因为多维数组必须是矩形的,处于同一层次的内层构造器必须产生相同维度的子数组。任何被应用于外层ARRAY构造器的造型会自动传播到所有的内层构造器。

多维数组构造器元素可以是任何得到一个正确种类数组的任何东西,而不仅仅是一个子-ARRAY结构。例如:

CREATE TABLE arr(f1 int[], f2 int[]);

INSERT INTO arr VALUES (ARRAY[[1,2],[3,4]], ARRAY[[5,6],[7,8]]);

SELECT ARRAY[f1, f2, '{{9,10},{11,12}}'::int[]] FROM arr;

array

------------------------------------------------

{{{1,2},{3,4}},{{5,6},{7,8}},{{9,10},{11,12}}}

(1 row)

你可以构造一个空数组,但是因为无法得到一个无类型的数组,你必须显式地把你的空数组造型成想要的类型。例如:

SELECT ARRAY[]::integer[];

array

-------

{}

(1 row)

也可以从一个子查询的结果构建一个数组。在这种形式中,数组构造器被写为关键词ARRAY后跟着一个加了圆括号(不是方括号)的子查询。例如:

SELECT ARRAY(SELECT oid FROM pg_proc WHERE proname LIKE 'bytea%');

array

-----------------------------------------------------------------------

{2011,1954,1948,1952,1951,1244,1950,2005,1949,1953,2006,31,2412,2413}

(1 row)

子查询必须返回一个单一列。如果子查询的输出列是非数组类型, 结果的一维数组将为该子查询结果中的每一行有一个元素, 并且有一个与子查询的输出列匹配的元素类型。 如果子查询的输出列是一种数组类型,结果将是同类型的一个数组, 但是要高一个维度。在这种情况下,该子查询的所有行必须产生同样维度的数组, 否则结果就不会是矩形形式。

用ARRAY构建的一个数组值的下标总是从一开始。更多关于数组的信息,请见第 8.15 节。

本文地址:http://www.cuug.com.cn/postgresql/pggaishu/23531793035.html 转载请注明!


在线预约 抢先报名 获取课程排期

Oracle培训机构

金牌讲师<>

冉乃纲-老师CUUG金牌讲师
冉老师 CUUG金牌讲师 Oracle及RedHat高级讲师、Unix/Linux 资深专家...[详细了解老师]

免费咨询上课流程 客服在线中

陈卫星-老师CUUG金牌讲师
陈老师 CUUG金牌讲师 精通Oracle管理、备份恢复、性能优化 11年Ora...[详细了解老师]

免费咨询上课流程 客服在线中

选学校如何选择适合自己的学校

CUUG -CHINA UNIX USER GROUP,是国际UNIX组织UNIFORUM的中国代表,是国内悠久的专业UNIX培训机构,被誉为中国UNIX 的摇篮。多年来,以提高教学质量为本,强调素质教育,积极引进、消化国外的新技术,有效的结合中国....[详情]

一站式服务(从入学到就业一帮到底)

入学

学习

就业

实操

食宿
海淀校区:北京市海淀区紫竹园路88号紫竹花园D座703(CUUG)
全国免费咨询电话:400-0909-964
电话:010-59426307 010-59426319 邮政编码:100089
部分信息来源于网络,如有错误请联系指正!
官方订阅号
官方服务号
版权所有@北京神脑资讯技术有限公司 (CUUG,中国UNIX用户协会) Copyright 2016 ALL Rights Reserved 京ICP备11008061号-1