假設我們在 Oracle 中有以下 XMLType:
<?xml version="1.0" encoding="UTF-8"?>
<root>
</root>
我需要最好使用 XML 函式來獲取 XML 版本和編碼值或整個 XML 序言,f。前任。XMLTABLE。那可能嗎?還是僅使用字串/CLOB 函式?
我們使用 Oracle 19c。
uj5u.com熱心網友回復:
那可能嗎?
不,不幸的是,它不是,因為像 XMLTable 這樣的 XML 函式與 XMLType 一起作業,它決議您的輸入 xml(如果是 CLOB 或 Varchar2,則來自您的 NLS_LANG 字符集,如果是 BLOB,則來自指定的字符集)并將其存盤在自己的內部代碼頁中當你得到它時,oracle 在你的 NLS_LANG 中回傳它:
SQL> with v as (select q'[<?xml version="1.1" encoding="blabla"?><root/>]' as vXML from dual)
2 select xmltype(vXML) x from v;
X
------------------------------------------------
<?xml version="1.1" encoding="US-ASCII"?>
<root/>
看看如果我將 NLS_LANG 更改為 UTF8 會怎樣:
SQL> with v as (select q'[<?xml version="1.1" encoding="blabla"?><root/>]' as vXML from dual)
2 select xmltype(vXML) x from v;
X
-----------------------------------------
<?xml version="1.1" encoding="UTF-8"?>
<root/>
SQL> ! env | grep NLS_LANG
NLS_LANG=american_america.UTF8
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/383943.html
上一篇:從資料框中的輸出值中洗掉[]
