云数据库 GAUSSDB-数组类型:数组类型的使用

时间:2024-11-13 14:46:54

数组类型的使用

数组类型的使用示例如下:

-- 创建有数组类型列的表,并插入一些数据
gaussdb=# CREATE TABLE orders (
 name  varchar,
 items varchar[]
);
gaussdb=# INSERT INTO orders VALUES('a', ARRAY['苹果', '橘子', '梨']);
gaussdb=# INSERT INTO orders VALUES('b', ARRAY['矿泉水', '可乐', '雪碧']);
gaussdb=# INSERT INTO orders VALUES('c', ARRAY['鼠标', '键盘', '耳机']);
gaussdb=# INSERT INTO orders VALUES('d', '{白菜, 土豆, 茄子}');

-- 查询数据
gaussdb=# SELECT * FROM orders ORDER BY name;
 name |       items        
------+--------------------
 a    | {苹果,橘子,梨}
 b    | {矿泉水,可乐,雪碧}
 c    | {鼠标,键盘,耳机}
 d    | {白菜,土豆,茄子}
(4 rows)

-- 访问数组元素
gaussdb=# SELECT items[1] FROM orders ORDER BY name;
 items  
--------
 苹果
 矿泉水
 鼠标
 白菜
(4 rows)

-- 访问元素超过范围或者访问下标为NULL时会返回NULL
gaussdb=# SELECT items[4] FROM orders ORDER BY name;
 items 
-------




(4 rows)

gaussdb=# SELECT items[null] FROM orders ORDER BY name;
 items 
-------




(4 rows)

-- 访问子数组
gaussdb=# SELECT items[1:2] FROM orders ORDER BY name;
     items     
---------------
 {苹果,橘子}
 {矿泉水,可乐}
 {鼠标,键盘}
 {白菜,土豆}
(4 rows)

-- 更新整个数组
gaussdb=# UPDATE orders SET items = ARRAY['香蕉', '西瓜', '草莓'] WHERE name = 'a';
gaussdb=# SELECT items FROM orders WHERE name = 'a';
      items       
------------------
 {香蕉,西瓜,草莓}
(1 row)

-- 更新数组的元素
gaussdb=# UPDATE orders SET items[1] = '芒果' WHERE name = 'a';
gaussdb=# SELECT items FROM orders WHERE name = 'a';
      items       
------------------
 {芒果,西瓜,草莓}
(1 row)

-- 更新数组的元素片段
gaussdb=# UPDATE ORDERS SET items[1:2] = ARRAY['电脑', '手机'] WHERE name = 'c';
gaussdb=# SELECT items FROM ORDERS WHERE name = 'c';
      items       
------------------
 {电脑,手机,耳机}
(1 row)

-- 添加数组元素,所有位于原数组最后一个元素和这个新元素之间的未赋值元素都将设为 NULL
gaussdb=# UPDATE orders SET items[4] = '显示器' WHERE name = 'c';
gaussdb=# SELECT items FROM orders WHERE name = 'c';
          items          
-------------------------
 {电脑,手机,耳机,显示器}
(1 row)

gaussdb=# UPDATE orders SET items[6] = '显示器2' WHERE name = 'c';
gaussdb=# SELECT items FROM orders WHERE name = 'c';
                items                 
--------------------------------------
 {电脑,手机,耳机,显示器,NULL,显示器2}
(1 row)
support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0345.html