XML 值
XML 值以 XML 文档, XML 内容或 XML 序列的形式表示格式正确的 XML。
作为使用 XML 数据类型定义的列的值存储在表中的 XML 值必须是格式正确的 XML 文档。 XML 值以与任何字符串值 (包括其他 XML 值) 都不可比拟的内部表示法进行处理。 可以应用于 XML 数据类型的唯一谓词是 IS NULL 谓词。
可以使用 XMLSERIALIZE 函数将 XML 值变换为表示 XML 文档的序列化字符串值。 同样,可以使用 XMLPARSE 函数将表示 XML 文档的字符串值转换为 XML 值。 与应用程序字符串和二进制数据类型交换时,可以隐式解析或序列化 XML 值。
XML 数据类型没有定义最大长度。 当它被视为表示 XML 的序列化字符串值 (与 LOB 数据值的限制相同) 时,它具有有效的最大长度。 与 LOB 一样,还有 XML 定位器和 XML 文件引用变量。
使用 XML 值时的限制: 除了一些例外,您可以在可以使用其他数据类型的相同上下文中使用 XML 值。 XML 值在以下位置有效:
- CAST 参数标记, XML 或 NULL 到 XML
- XMLCAST 参数标记, XML 或 NULL 到 XML
- IS NULL 谓词
- COUNT 和 COUNT_BIG 聚集函数
- COALESCE , IFNULL , HEX , LENGTH , CONTAINS 和 SCORE 标量函数
- XML 标量函数
- 不带 DISTINCT 的 SELECT 列表
- INSERT VALUES 子句, UPDATE SET 子句和 MERGE
- SET 和 VALUES INTO
- 过程参数
- 用户定义的函数自变量和结果
- 触发相关变量
- 动态预编译语句的参数标记值
不能在以下位置直接使用 XML 值。 在允许表达式的情况下,可以使用 XML 值,例如,作为 XMLSERIALIZE 的自变量:
- 包含 DISTINCT 关键字的 SELECT 列表
- GROUP BY 子句
- ORDER BY 子句
- 非 UNION ALL 全查询的子查询
- 基本,量化, BETWEEN , DISTINCT , IN 或 LIKE 谓词
- 具有 DISTINCT 关键字的聚集函数
- 主键,唯一键或外键
- 检查约束
- 索引列
没有任何主语言具有 XML 数据类型的内置数据类型。
有关 XML 数据模型和 XML 值的信息,请参阅 SQL XML 编程。
确定 XML 的 CCSID
可以使用任何 EBCDIC 单字节或混合 CCSID 或 Unicode CCSID 1208,1200 或 13488 来定义 XML 数据。 不允许 65535 作为 XML 数据的 CCSID。 当定义 XML 数据类型时,可以显式指定 CCSID。 如果未显式指定,那么将使用 SQL_XML_DATA_CCSID QAQQINI 文件选项的值指定 CCSID。 如果尚未设置此值,那么缺省值为 1208 (UTF-8)。
当语句运行时,将为 SQL 模式语句中使用的 XML 数据类型建立 CCSID。
- 如果是 XML AS DBCLOB ,那么 CCSID 将为 1200。
- 如果是 XML AS CLOB 且 SQL_XML_DATA_CCSID QAQQINI 值为 1200 或 13488 ,那么 CCSID 将为 1208。
- 否则, SQL_XML_DATA_CCSID QAQQINI 值将用作 CCSID。
由于所有隐式和显式 XMLPARSE 函数都是使用 UTF-8 (1208) 来执行的,因此无需将数据转换为 UTF-8。