簡體   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