GBase8c复合类型之数组类型
GBase 8c 支持数组类型,允许存储和操作一维或多维数组数据。数组类型需在存储过程或函数中通过自定义类型定义,使用 TYPE array_type IS VARRAY(size) OF data_type; 语法,其中 array_type 为类型名,size 为最大元素数量(正整数),data_type 为成员类型(如 integer 或 text)1。
数组操作与函数: 数组支持自动增长,访问越界元素时返回 NULL。GBase 8c 提供了丰富的内置函数用于数组处理,例如:
array_append(anyarray, anyelement):向数组末尾添加元素(仅限一维数组)。array_prepend(anyelement, anyarray):向数组开头添加元素(仅限一维数组)。array_cat(anyarray, anyarray):连接两个数组(支持多维数组)。array_union(anyarray, anyarray):合并数组并保留重复元素。array_union_distinct(anyarray, anyarray):合并数组并去重。array_intersect(anyarray, anyarray):计算两个数组的交集。array_except(anyarray, anyarray):计算两个数组的差集。array_ndims(anyarray):返回数组的维度数。array_length(anyarray, int):返回指定维度的长度。unnest(anyarray):将数组展开为行集。
此外,还可使用string_to_array将字符串转换为数组,或array_to_string反向转换;访问数组元素时使用圆括号(如array:ml-citation{ref="2" data="citationList"})13。
数组的使用场景与限制: 数组类型的作用域限于定义它的存储过程或函数内部,无法在全局环境中直接使用。数组元素可通过圆括号索引访问,但越界访问不会报错,仅返回 NULL。数组类型不支持在匿名块中使用记录类型(record type),且自定义数组类型与存储过程中定义的同名类型冲突时,系统优先选择存储过程内的定义
评论
热门帖子
- 12025-12-01浏览数:182763
- 22023-05-09浏览数:25057
- 42023-09-25浏览数:18525
- 52020-05-11浏览数:17529