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