[英]Convert XML Type to VARCHAR
我正在尝试将从XMLTYPE列提取的数据转换为varchar,但它给我错误:
SELECT TO_CHAR(EXTRACT (XML_DATA, '/root/MYData/text()'))
FROM TBL_DATA
给出错误“数据类型不一致:预期获得NUMBER-”
我的动机是将提取的值放入变量中,并在存储的proc中进一步使用它,该节点可以包含数字或字母:
SELECT TO_CHAR(EXTRACT (XML_DATA, '/root/MYData/text()')) INTO TEMP_VAR
FROM TBL_DATA
使用EXTRACTVALUE
而不是EXTRACT
:
Oracle 11g R2架构设置 :
CREATE TABLE TBL_DATA ( XML_DATA ) AS
SELECT XMLTYPE( '<root><MYData>test string</MYData></root>' ) FROM DUAL;
查询1 :
SELECT EXTRACTVALUE(XML_DATA, '/root/MYData/text()')
FROM TBL_DATA
结果 :
| EXTRACTVALUE(XML_DATA,'/ROOT/MYDATA/TEXT()') |
|----------------------------------------------|
| test string |
查询2 :
但是, 不建议使用EXTRACT
和EXTRACTVALUE
,oracle建议改为使用XMLTABLE
:
SELECT value
FROM TBL_DATA t
CROSS JOIN
XMLTABLE(
'/root/MYData'
PASSING t.XML_DATA
COLUMNS value VARCHAR2(200) PATH 'text()'
)
结果 :
| VALUE |
|-------------|
| test string |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.