暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8c 数据类型——13-数组

唤溪 2022-02-09
419

GBase 8c允许定义变长多维数组,例如:

CREATE TABLE sal_emp ( name text, pay_by_quarter integer[], schedule text[][] ); CREATE TABLE

数组数据类型通过在数据类型后面加上方括号([])来命名。
上述例子中创建一个名为sal_emp的表,它的列分别为:

  • 类型为text的列name;
  • 一维integer类型数据pay_by_quarter;
  • 二维text类型数组schedule。

同时,CREATE TABLE的语法也允许指定数组的确切大小,例如:

CREATE TABLE tictactoe ( squares integer[3][3] ); CREATE TABLE

但是这种指定并不限制数组的大小和长度,并不影响后续运行时的行为。
或者写成:

pay_by_quarter integer ARRAY[4],

或者:

pay_by_quarter integer ARRAY,

数组的输入,一般将元素值用花括号包围并用逗号分隔。例如:

INSERT INTO sal_emp VALUES ('Bill', '{10000, 10000, 10000, 10000}', '{{"meeting", "lunch"}, {"training", "presentation"}}'); INSERT 0 1 INSERT INTO sal_emp VALUES ('Carol', ARRAY[20000, 25000, 25000, 25000], ARRAY[['breakfast', 'consulting'], ['meeting', 'lunch']]); INSERT 0 1

数组的查询操作与表查询类似。例如:

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)

对所有员工第三季度工资查询:

SELECT pay_by_quarter[3] FROM sal_emp; pay_by_quarter ---------------- 10000 25000 (2 rows)

数组的修改,可以使用UPDATE语句。例如:

UPDATE sal_emp SET pay_by_quarter = '{25000,25000,27000,27000}' WHERE name = 'Carol'; UPDATE 1

数组的搜索:

SELECT * FROM sal_emp WHERE 10000 = ALL (pay_by_quarter); name | pay_by_quarter | schedule ------+---------------------------+------------------------------------------- Bill | {10000,10000,10000,10000} | {{meeting,lunch},{training,presentation}} (1 row)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论