返回首页

gbase数据、南大通用产品文档:GBase8sSET(e) 数据类型

更新日期:2024年09月11日

SET 数据类型是存储唯一元素的无序集合类型
如 GBase 8s SQL 指南:语法 中所述,重复的元素值无效。(有关支持重复值的集合
类型,请参阅 MULTISET(e) 数据类型中对 MULTISET 的描述。)
可以将相同表的不超过 97 列声明为 SET 数据类型。(同一限制还适用于 MULTISET
和 LIST 集合类型。)
SET 中的元素没有按顺序的位置。也就是说,在 SET 中不存在第一、第二或第三元素
的构造。(有关具有元素的顺序位置的集合类型,请参阅 LIST(e) 数据类型。)SET 中的
所有元素都具有相同的元素类型。要指定元素类型,使用以下语法:
SET(element_type NOT NULL)
集合的 element_type 可以是下列任何类型:
内置类型(SERIAL、SERIAL8、BIGSERIAL、BYTE 和 TEXT 除外)
命名或未命名 ROW 类型
其他集合类型
不透明类型

必须对 SET 元素指定 NOT
NULL 约束。
对于 SET 列,
没有任何其他约束有效。
有关 SET
集合类型语法的更多信息,请参阅 GBase 8s SQL 指南:语法。
除非另有指示,否则可以在使用任何其他数据类型的地方使用 SET。例如:
在用来搜索匹配的 SET 值的 SELECT 语句 WHERE 子句中的 IN 谓词后面
作为用来确定 SET 列中的元素数目的 CARDINALITY 或 mi_collection_card( )
函数的自变量
不能将 SET 值用作聚集函数(例如,AVG、MAX、MIN 或 SUM)的自变量。有关更多信
息,请参阅 GBase 8s SQL 指南:语法 中的 Condition 和 Expression 两节。
下面的示例声明两个集合。
第一条语句声明一组整数,
第二条语句声明一组字符元素。
SET(INTEGER NOT NULL)

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 109 -

SET(CHAR(20) NOT NULL)
下面的示例从值列表中构造相同的集合:
SET{1, 5, 13}
SET{"Oakland", "Menlo Park", "Portland", "Lenexa"}
在以下示例中,SET 构造函数是 CREATE TABLE 语句的一部分:
CREATE TABLE tab
(
c CHAR(5),
s SET(INTEGER NOT NULL)
);
下列 set 值相等:
SET{"blue", "green", "yellow"}
SET{"yellow", "blue", "green"}

Row/column index out of range
行或列索引超出范围。
比较索引和超出查询的行和列数,确保它在范围内。

array_typanalyze
range_typanalyze
ts_typanalyze
local_rto_stat