LIST 数据类型是可存储相同 SQL 数据类型的有序非 NULL 元素的集合类型。
LIST 数据类型支持(但不需要)重复元素值。LIST 数据类型的元素具有顺序位置。
LIST 对象必须具有第一元素,可后跟第二元素,以此类推。
有关不支持顺序位置的无序集合数据类型,请参阅 MULTISET(e) 数据类型和
SET(e) 数据类型。有关可以存储一组包含不同 SQL 数据类型值的复杂数据类型,请参阅
ROW 数据类型。
可以将相同表的不超过 97 列声明为 LIST 数据类型。(同一限制适用于 SET 和
GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 102 -
MULTISET 集合类型。)
缺省情况下,数据库服务器将新元素插入元素集末尾的插入 LIST 对象中。为了支持
LIST 的顺序位置,INSERT 语句提供了 AT 子句。此子句允许您指定要插入 LIST 元素值
的位置。有关更多信息,请参阅 GBase 8s SQL 指南:语法 中的 INSERT 语句。
LIST 对象中的所有元素都具有相同的元素类型。要指定元素类型,使用以下语法:
LIST(element_type NOT NULL)
LIST 的 element_type 可以是下列数据类型之一:
内置类型(SERIAL、SERIAL8、BIGSERIAL、BYTE 和 TEXT 除外)
DISTINCT 类型
未命名或命名 ROW 类型
其他集合类型
不透明类型
必须对 LIST 元素指定 NOT NULL 约束。其他约束对 LIST 列无效。有关 LIST 数据
类型语法的更多信息,请参阅 GBase 8s SQL 指南:语法。
可以在任何其他数据类型有效的地方使用 LIST。例如:
在用来搜索匹配的 LIST 值的 SELECT 语句 WHERE 子句中的 IN 谓词后面
用作确定 LIST 列中的元素数目的 CARDINALITY 或 mi_collection_card( ) 函
数的自变量
不能将 LIST 值用作聚集函数(例如,AVG、MAX、MIN 或 SUM)的自变量。
与使用其他集合数据类型一样,必须在数据类型声明中使用括号 ( ( ) ) 来为 LIST
数据类型的元素集定界:
CREATE FUNCTION update_nums( list1 LIST (ROW (a VARCHAR(10),
b VARCHAR(10),
c INT) NOT NULL ));但是,在
包含文字 LIST 值的 SQL 表达式中,必须使用花括号 ({ }) 来对 LIST 对象的元素集定
界,如以下示例中所示。
如果两个 LIST 值具有相同顺序的相同元素,那么它们相等。以下是 LIST 对象的两
个示例,但是它们的值不相等。:
LIST{"blue", "green", "yellow"}
LIST{"yellow", "blue", "green"}
上面的表达式不相等,原因是值顺序不同。要使其相同,第二条语句必须为:
LIST{"blue", "green", "yellow"}