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 列,没有任何其他约束有效。有关
GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 112 -
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)
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"}