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

时间:2025-02-12 15:05:25

数组类型的使用

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

-- 创建有数组类型列的表,并插入一些数据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时会返回NULLgaussdb=# 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)-- 添加数组元素,所有位于原数组最后一个元素和这个新元素之间的未赋值元素都将设为NULLgaussdb=# 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/centralized-devg-v8-gaussdb/gaussdb-42-1665.html