更新时间:2026-10-21 GMT+08:00
分享

XMLTYPE类型

XMLTYPE数据类型用于存储格式良好的、遵循XML标准定义的“文档”。其内部采用字符串格式存储数据,与直接在TEXT域中存储XML数据相比,XMLTYPE数据类型的优势在于其支持基于LIBXML2提供的标准XML操作函数和XML规范性检查。XMLTYPE类型相关函数请参见XMLTYPE类型函数。

XML解析器将XML文档转换为XML DOM对象。DOM(Document Object Model 文档对象模型)定义了访问和操作文档的标准方法。XML DOM(XML Document Object Model)定义了访问和操作XML文档的标准方法。XML DOM将XML文档视为树结构。所有元素都可以通过DOM树来访问,可以修改或删除它们的内容,并创建新的元素,一个元素、元素的文本、以及元素的属性都被视为节点。最大为1GB。

示例:

gaussdb=# CREATE TABLE xmltypetest(id int, data xmltype);
gaussdb=# INSERT INTO xmltypetest VALUES (1, '<ss/>');
gaussdb=# INSERT INTO xmltypetest VALUES (2, '<xx/>');
gaussdb=# SELECT * FROM xmltypetest ORDER BY 1;
 id | data
----+-------
  1 | <ss/>
  2 | <xx/>
(2 rows)
gaussdb=# DROP TABLE xmltypetest;
XMLTYPE类型不支持以下操作:
  • 逻辑表达式and、or、not。
  • 作为非XMLTYPE操作函数的系统函数的入参。
  • 作为分布键、分区键、二级分区键、主键或唯一约束。
  • XMLTYPE相关的隐式类型转换,包括字符串和XMLTYPE类型之间的隐式转换。
  • 数组表达式、行表达式、子查询表达式、TABLE OF和TABLE OF INDEX。
  • 使用XMLTYPE字段创建普通索引、unique索引、global索引、local索引或部分索引。
  • 比较表达式>、<、>=、<=、=、<>、!=、^=、between and、is distinct from、is not distinct from、<=>。
  • 条件表达式decode、nullif、greatest、least。
  • 作为distinct、group by、order by表达式的参数。
  • 聚合函数sum、max、min、avg、list_agg、corr、covar_pop、covar_samp、stddev、stddev_pop、stddev_samp、var_pop、var_samp、variance、bit_and、bit_or、bool_and、bool_or、every、regr_avgx、regr_avgy、regr_count、regr_intercept、regr_r2、regr_slope、regr_sxx、regr_sxy、regr_syy、rank、spread。
  • 不支持ODBC相关绑定传参接口。
XMLTYPE类型支持如下操作:
  • 物理备份恢复。
  • 空值判断is null、is not null。
  • 条件表达式case、coalesce。
  • 全局临时表和本地临时表。
  • 强制类型转换。
  • 表达式索引。
  • XMLTYPE类型的输入值需要符合XML格式标准。
  • 支持gs_dump导出和gs_restore导入操作。
  • 并行查询,支持Astore和Ustore存储引擎。
  • 作为自定义函数的入参、出参、自定义变量和返回值。
  • 作为存储过程的入参、出参、自定义变量和返回值。支持自治事务的存储过程。
  • 字符处理函数quote_literal(string text)(需显式转换为字符类型)、quote_nullable(string text)(需显式转换为字符类型)。
  • 聚集函数count、array_agg、checksum(需显式转换为字符类型)、string_agg(需显式转换为字符类型)。
  • 自定义类型中复合类型涉及XMLTYPE类型的增删改查,且与普通表中的XMLTYPE字段一样,需要按照XMLTYPE的语法插入和修改。
  • 支持对该字段执行SELECT、UPDATE、INSERT或DELETE操作,使用SQL语法输入XMLTYPE值。

可以创建名称为xmltype的Schema,用户可以在该Schema下创建函数,但是不能通过schema.func()这种方式调用Schema下定义的函数。

XMLTYPE类型在输出时,会将XML文本声明中encoding属性修改为当前数据库编码。

相关文档