繁体   English   中英

将XML类型转换为VARCHAR

[英]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

SQL小提琴

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

但是, 建议使用EXTRACTEXTRACTVALUE ,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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM