嵌套的引号

文字的集合 的图引用此部分。

嵌套的集合是为另一集合的元素类型的集合。

无论您何时嵌套集合文字,请使用嵌套的引号。在这些情况下,您必须遵循嵌套的引号的规则。否则,数据库不可正确地解析该字符串。

通用的规则是,对于每一新的嵌套级别,您必须加倍引号的数目。例如,如果您为第一级使用双引号("),则你必须为第二级使用两个双引号,为第三级使用四个双引号,为第四级使用八个,为第五级使用十六个,依此类推。

同样地,如果您对第一级使用单引号('),则您必须为第二级使用两个单引号,为第三级使用四个单引号。对您可嵌套的级数没有限制,只要您遵循此规则即可。

下列示例说明两级嵌套的集合文字的情况,使用双引号(")。在此,表 tab5 是单列表,其唯一的列 set_col 为嵌套的集合类型。

下列语句创建 tab5 表:
CREATE TABLE tab5 (set_col SET(SET(INT NOT NULL) NOT NULL));
下列语句将值插入到表 tab5 内:
INSERT INTO tab5 VALUES ( "SET{""SET{34, 56, 23, 33}""}" );

对于每一文字值,开引号与收引号必须相匹配。因此,如果您以两个双引号开启文字,则您必须以两个双引号关闭那个文字。(""a literal value"")。

要在 GBase 8s ESQL/C 程序中的 SQL 语句内指定嵌套的引号, 对于由单引号定界的字符串之中的每个双引号,请使用 C 转义字符。否则 GBase 8s ESQL/C 预处理器 不可正确地解释文字的集合值。例如,前面的对于 tab5 表的 INSERT 语句会如下出现在 GBase 8s ESQL/C 程序中:
EXEC SQL insert into tab5
        values ('set{\"set{34, 56, 23, 33}\"}');

要获取更多信息,请参阅 GBase 8s ESQL/C 程序员手册 中关于复合的数据类型的章节。

如果该集合为嵌套的集合,则您必须为每一级集合类型包括集合构造函数语法。假设您定义下列列:
nest_col SET(MULTISET (INT NOT NULL) NOT NULL);
下列语句将三个元素插入到 nest_col 列内:
INSERT INTO tabx (nest_col) 
        VALUES ("SET{'MULTISET{1, 2, 3}'}");