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

时间:2024-11-12 09:17:48

数组类型的使用

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

-- 创建有数组类型列的表,并插入一些数据
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)

gaussdb=# DROP TABLE orders;
support.huaweicloud.com/centralized-devg-v3-gaussdb/gaussdb-12-0334.html