我正在尝试将从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
答案 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
:
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()'
)