XMLCAST 规范
XMLCAST规范返回第一个操作数(转换操作数),转换为数据类型指定的类型。
XMLCAST支持涉及XML值的转换,包括非XML数据类型与XML数据类型之间的转换。 操作数的类型或指定的数据类型必须为XML。 如果操作数类型和目标数据类型都是XML,XMLCAST将不起作用。
- 表达式
- 如果操作数是表达式,则结果是将参数值转换为指定的目标数据类型。 表达式或目标数据类型必须为XML数据类型。 表达式不能是宿主变量或参数标记。
- NULL
- 如果操作数是 NULL 关键字,则目标数据类型必须是 XML 数据类型。 结果为空XML值。
- 参数标记
- 如果操作数是参数标记,则目标数据类型必须是XML数据类型。 参数标记(用问号表示)通常被视为表达式,但在这种情况下,它具有特殊含义。 当操作数是参数标记时,指定的数据类型表示“承诺”,即参数标记的替换值将分配给指定的数据类型(使用赋值规则)。 这种参数标记被视为类型化参数标记,在函数解析、选择列表描述操作或列分配中,它与其他类型化值一样处理。
- data-type
- SQL数据类型的名称。 如果名称不符合条件,则使用SQL路径进行数据类型解析。 数据类型不能指定不同的类型。 如果数据类型具有相关属性,例如长度、精度和比例,则在指定数据类型值时,应将这些属性包括在内。 CHAR默认长度为1,DECIMAL默认精度为5,如果未指定,则比例系数为0。 CLOB和DBCLOB默认长度为 1M。 当目标数据类型为XML,源数据类型为TIMESTAMP时,结果中不包含数值小数部分末尾的零。 对支持的数据类型的限制取决于指定的转换操作数。 字符串数据类型的默认编码方案是Unicode。 通过指定CCSID子句,可以更改编码方案。
表 1. 支持从非XML值转换为XML值 源数据类型 目标数据类型:XML 获得的 XML 模式类型 日期 Y xs:date 时间 Y xs:time 带时区的TIMESTAMP (p ) Y xs:dateTime
示例
示例1 :创建一个空XML值。
XMLCAST(NULL AS XML)示例2 :将XMLQUERY表达式提取的值转换为INTEGER:
XMLCAST(XMLQUERY('/PRODUCT/QUANTITY'
PASSING xmlcol) AS INTEGER)示例3: 将XMLQUERY表达式提取的值转换为长度可变的字符串:
XMLCAST(XMLQUERY('/PRODUCT/NAME'
PASSING xmlcol) AS VARCHAR(20))请注意,在上述两个示例中,如果XMLQUERY返回一个包含多个节点的序列,XMLCAST规范将返回错误。
示例4 :将SQL标量子查询中提取的值转换为XML值:
XMLCAST((SELECT quantity FROM product AS p
WHERE p.id = 1077) AS XML)