强制转型集合数据类型

在某些情况下,可使用显式强制转型来在两个具有不同元素类型的集合之间执行转换。要在任何两种集合类型的值之间进行比较或替代,两个集合都必须具有 SET、MULTISET 或 LIST 类型。
  • 当所有组件类型相同时,两种元素类型是等价的。例如:如果一个集合的元素类型是行类型,则另一集合类型也是行类型,并且具有相同数目的字段和相同的字段数据类型。
  • 数据库中存在用于在元素类型的不具有相同数据类型的任何以及所有组件之间执行转换的强制转型。

    如果对应的元素类型不具有相同的数据类型,则 GBase 8s 可使用内置强制转型或用户定义的强制转型来对这些元素类型处理数据转换。

当数据库服务器对集合数据类型的值进行插入、更新或比较时,在元素数据类型级别进行类型检查。因此,在两种集合类型之间的强制转型中,由于存储在集合中的实际数据具有特定的元素类型,所以数据转换在元素类型的级别发生。

在本节中的集合强制转型示例中,使用下列类型和表:
CREATE DISTINCT TYPE my_int AS INT;

CREATE TABLE set_tab1 (col1 SET(my_int NOT NULL));
CREATE TABLE set_tab2 (col2 SET(INT NOT NULL));
CREATE TABLE set_tab3 (col3 SET(FLOAT NOT NULL));
CREATE TABLE list_tab (col4 LIST(INT NOT NULL));
CREATE TABLE m_set_tab(col5 MULTISET(INT NOT NULL));