更新时间:2024-03-06 GMT+08:00

XML类型

XML数据类型可以被用来存储XML(eXtensible Markup Language)数据。XML数据可以存储为text类型,但是XML数据类型的优势在于会检查每个存储的值是不是结构良好的XML值。XML可以存储由XML标准定义的格式良好的文档,以及由XML标准中定义的“内容”片断,内容片断中可以有多个顶级元素或字符节点。

XML类型相关的支持函数请参见XML函数

设置XML参数

语法格式如下:

1
2
SET XML OPTION { DOCUMENT | CONTENT };
SET xmloption TO { DOCUMENT | CONTENT };

当一个字符串值在没有通过XMLPARSE或XMLSERIALIZE函数与XML类型进行转换时,由XML OPTION会话配置参数来决定选择DOCUMENT还是CONTENT。

默认为CONTENT,表示所有形式的xml数据都被允许。

示例:

1
2
3
4
SET XML OPTION DOCUMENT;
SET
SET xmloption TO DOCUMENT;
SET

设置二进制数据的编码格式

语法格式:

1
SET xmlbinary TO { base64 | hex};

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
SET xmlbinary TO base64;
SET

SELECT xmlelement(name foo, bytea 'bar');
xmlelement
-----------------
<foo>YmFy</foo>
(1 row)

SET xmlbinary TO hex;
SET

SELECT xmlelement(name foo, bytea 'bar');
xmlelement
-------------------
<foo>626172</foo>
(1 row)

访问XML值

XML数据类型比较特殊,它不提供任何比较操作符,这是因为对于XML数据没有通用的比较算法,所以无法通过比较一个XML值和一个搜索值来检索数据行。XML数据通常应该伴随一个ID值用于检索数据。另一种比较XML值的方案是将XML值转换成字符串,但字符串的比较并不能解决常见的XML值比较场景。