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、TIMESTAMPCHAR(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 函数与工具
- 📚 Oracle XML 函数参考指南:查看 Oracle XML 全套核心参考
- 📊 XMLTABLE() 函数:将多行多列 XML 整体投影为关系表
- 📥 XMLPARSE() 函数:将文本解析为 XMLType 实例
- 📐 SQL 格式化工具:快速格式化包含长嵌套调用的 SQL 语句