Oracle XMLCAST() 函数使用指南

在 Oracle 数据库中,XMLCAST() 是一个用于将 XML 表达式或 XPath 评估结果安全转换为指定标量 SQL 数据类型的内置函数。与直接使用通用 CAST() 相比,XMLCAST() 严格遵循 ANSI SQL/XML 标准,能够将 XMLType 中的文本节点直接解包并转换为目标类型(如 NUMBER、VARCHAR2、DATE 等)。


语法

Oracle XMLCAST() 函数的标准语法如下:

XMLCAST ( value_expr AS datatype )

参数说明

  • value_expr:必需。一个返回单一标量值的 XML 表达式,通常是 XMLQUERY(... RETURNING CONTENT) 或包含单个文本节点的 XMLType 对象。如果表达式返回了包含多个节点或复合 XML 元素的结果,Oracle 将报错(ORA-19138)。
  • datatype:必需。目标 SQL 标量数据类型,例如:
    • NUMBER、NUMBER(p, s)
    • VARCHAR2(n)
    • DATE、TIMESTAMP
    • CHAR(n)

返回值

返回目标标量 SQL 数据类型的值。若 value_expr 结果为空或为 NULL,则返回 NULL。


使用示例

示例 1:将 XML 数值转换为 SQL NUMBER 类型

SELECT 
    XMLCAST(
        XMLQUERY('/product/price/text()' 
            PASSING XMLPARSE(DOCUMENT '<product><price>199.95</price></product>') 
            RETURNING CONTENT
        ) 
        AS NUMBER(10, 2)
    ) AS product_price
FROM dual;

输出结果:

PRODUCT_PRICE
-------------
       199.95

示例 2:将 XML 日期转换为 SQL DATE 类型

SELECT 
    XMLCAST(
        XMLQUERY('/event/date/text()' 
            PASSING XMLPARSE(DOCUMENT '<event><date>2026-11-03</date></event>') 
            RETURNING CONTENT
        ) 
        AS DATE
    ) AS event_date
FROM dual;

相关 XML 函数与工具