将XML Type转换为VARCHAR

时间:2017-12-06 21:43:54

标签: sql xml oracle

我正在尝试将从XMLTYPE列提取的数据转换为varchar,但它给了我错误:

SELECT TO_CHAR(EXTRACT (XML_DATA, '/root/MYData/text()'))
  FROM TBL_DATA

给出错误“数据类型不一致:期望NUMBER得到 - ”

我的动机是将提取的值放入变量并在存储过程中进一步使用它,节点可以包含数字或字母:

SELECT TO_CHAR(EXTRACT (XML_DATA, '/root/MYData/text()')) INTO TEMP_VAR
  FROM TBL_DATA

1 个答案:

答案 0 :(得分:1)

使用names = "Jim", "Bob", "James" user_input = "Jimbo" Names.objects.filter(names__icontains=user_input) #returns empty queryset Names.objects.filter(???=user_input) #returns queryset with "Jim" 而不是EXTRACTVALUE

SQL Fiddle

Oracle 11g R2架构设置

EXTRACT

查询1

CREATE TABLE TBL_DATA ( XML_DATA ) AS
SELECT XMLTYPE( '<root><MYData>test string</MYData></root>' ) FROM DUAL;

<强> Results

SELECT EXTRACTVALUE(XML_DATA, '/root/MYData/text()')
  FROM TBL_DATA

查询2

但是,EXTRACT and EXTRACTVALUE are deprecated和oracle建议改为使用| EXTRACTVALUE(XML_DATA,'/ROOT/MYDATA/TEXT()') | |----------------------------------------------| | test string |

XMLTABLE

<强> Results

SELECT value
FROM   TBL_DATA t
       CROSS JOIN
       XMLTABLE(
         '/root/MYData'
         PASSING t.XML_DATA
         COLUMNS value VARCHAR2(200) PATH 'text()'
       )