XMLCAST 规范
XMLCAST 规范将强制类型转换操作数 (第一个操作数) 返回到数据类型指定的类型。 XMLCAST 支持涉及 XML 值的强制类型转换,包括非 XML 数据类型与 XML 数据类型之间的转换。 如果不支持强制类型转换,那么将返回错误 (SQLSTATE 22003)。
- expression
- 如果强制类型转换操作数是表达式 (参数标记或 NULL 除外) ,那么结果是转换为指定目标数据类型的自变量值。 表达式或目标数据类型必须是 XML 数据类型 (SQLSTATE 42846)。
- NULL
- 如果强制类型转换操作数是关键字 NULL ,那么目标数据类型必须是 XML 数据类型 (SQLSTATE 42846)。 结果为空 XML 值。
- 参数-标记
- 如果强制类型转换操作数是参数标记,那么目标数据类型必须是 XML (SQLSTATE 42846)。 参数标记通常被视为表达式,但在这种情况下会单独记录,因为它具有特殊含义。 如果强制类型转换操作数是参数标记,那么指定的数据类型将被视为可将替换项分配给指定的 (XML) 数据类型 (使用商店分配) 的承诺。 此类参数标记被认为是类型化参数标记,出于函数解析,对选择列表的描述操作或列赋值的目的,将其视为任何其他类型化值。
- data-type
- 现有 SQL 数据类型的名称。 如果未限定该名称,那么将使用 SQL 路径来执行数据类型解析。 如果数据类型具有相关联的属性 (例如,长度,精度和小数位) ,那么在为 数据类型指定值时应包含这些属性。 CHAR 缺省为长度 1 , DECIMAL 缺省为精度 5 和小数位 0 (如果未指定)。 对受支持数据类型的限制基于指定的强制类型转换操作数。
- 对于作为表达式的强制类型转换操作数,受支持的目标数据类型取决于强制类型转换操作数的数据类型 (源数据类型)。
- 对于关键字为 NULL 的强制类型转换操作数,目标数据类型必须为 XML。
- 对于作为参数标记的强制类型转换操作数,目标数据类型必须为 XML。
注: 支持非 Unicode 数据库: 当 XMLCAST 用于将 XML 值转换为 SQL 数据类型时,将执行代码页转换。 强制类型转换表达式的编码从 UTF-8 转换为数据库代码页。 由于此转换,原始表达式中不存在于数据库代码页中的字符将替换为替换字符。
示例
- 创建空 XML 值。
XMLCAST(NULL AS XML) - 将从 XMLQUERY 表达式抽取的值转换为 INTEGER:
XMLCAST(XMLQUERY('$m/PRODUCT/QUANTITY' PASSING xmlcol AS "m") AS INTEGER) - 将从 XMLQUERY 表达式中抽取的值转换为变长字符串:
XMLCAST(XMLQUERY('$m/PRODUCT/ADD-TIMESTAMP' PASSING xmlcol AS "m") AS VARCHAR(30)) - 将从 SQL 标量子查询抽取的值转换为 XML 值。
XMLCAST((SELECT quantity FROM product AS p WHERE p.id = 1077) AS XML)
