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

微信公众号新浪微博
免费咨询电话:400-0909-964
当前位置: 网站首页 > postgresql > 教程 > PostgreSQL教程 -》数据类型 -》数组值输入

PostgreSQL教程 -》数据类型 -》数组值输入

文章来源: 更新时间:2023/12/11 16:01:07

在线老师点击咨询:

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

我要咨询

8.15.2. 数组值输入

要把一个数组值写成一个文字常数,将元素值用花括号包围并用逗号分隔(如果你懂C,这和初始化结构的C语法没什么两样)。在任意元素值周围可以使用双引号,并且在元素值包含逗号或花括号时必须这样做(更多细节如下所示)。因此,一个数组常量的一般格式如下:

'{ val1 delim val2 delim ... }'

这里delim是类型的定界符,记录在类型的pg_type项中。在PostgreSQL发行提供的标准数据类型中,所有的都使用一个逗号(,),除了类型box使用一个分号(;)。每个val可以是数组元素类型的一个常量,也可以是一个子数组。一个数组常量的例子是:

'{{1,2,3},{4,5,6},{7,8,9}}'

该常量是一个二维的,3乘3数组,它由3个整数子数组构成。

要设置一个数组常量的一个元素为NULL,在该元素值处写NULL(任何NULL的大写或小写变体都有效)。如果你需要一个真正的字符串值“NULL”,你必须在它两边放上双引号。

(这些种类的数组常数实际是第 4.1.2.7 节中讨论的一般类型常量的一种特殊形式。常数最初被当做一个字符串,然后被传给数组的输入转换例程。有必要时可能需要一个显式的类型指定。)

现在我们可以展示一些INSERT语句:

INSERT INTO sal_emp

VALUES ('Bill',

'{10000, 10000, 10000, 10000}',

'{{"meeting", "lunch"}, {"training", "presentation"}}');

INSERT INTO sal_emp

VALUES ('Carol',

'{20000, 25000, 25000, 25000}',

'{{"breakfast", "consulting"}, {"meeting", "lunch"}}');

前两个插入的结果看起来像这样:

SELECT * FROM sal_emp;

name | pay_by_quarter | schedule

-------+---------------------------+-------------------------------------------

Bill | {10000,10000,10000,10000} | {{meeting,lunch},{training,presentation}}

Carol | {20000,25000,25000,25000} | {{breakfast,consulting},{meeting,lunch}}

(2 rows)

多维数组的每一维都必须有相匹配的长度。不匹配会造成错误,例如:

INSERT INTO sal_emp

VALUES ('Bill',

'{10000, 10000, 10000, 10000}',

'{{"meeting", "lunch"}, {"meeting"}}');

ERROR: multidimensional arrays must have array expressions with matching dimensions

ARRAY构造器语法也可以被用于:

INSERT INTO sal_emp

VALUES ('Bill',

ARRAY[10000, 10000, 10000, 10000],

ARRAY[['meeting', 'lunch'], ['training', 'presentation']]);

INSERT INTO sal_emp

VALUES ('Carol',

ARRAY[20000, 25000, 25000, 25000],

ARRAY[['breakfast', 'consulting'], ['meeting', 'lunch']]);

注意数组元素是普通SQL常数或表达式,例如,字符串文字使用单引号而不是双引号包围,因为双引号可以出现在一个数组文字中。ARRAY构造器语法的详细讨论请见第 4.2.12 节。

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


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

Oracle培训机构

金牌讲师<>

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

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

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

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

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

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

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

入学

学习

就业

实操

食宿
地址:北京市海淀区北清路164号28-38号院
课程咨询:010-59426307 010-59426319 400-0909-964
企业服务:137 1818 8639(陈经理)
部分信息来源于网络,如有错误请联系指正!
版权所有@北京神脑资讯技术有限公司 (CUUG,中国UNIX用户协会) Copyright 2016 ALL Rights Reserved 京ICP备11008061号-1