gpt4 book ai didi

sql - Oracle - 从 XMLType 中的 XML 序言中提取 XML 版本和编码

转载 作者:行者123 更新时间:2023-12-05 05:51:21 26 4
gpt4 key购买 nike

假设我们在 Oracle 中有以下 XMLType:

<?xml version="1.0" encoding="UTF-8"?>
<root>
</root>

我需要获取 XML 版本和编码值或整个 XML 序言,最好使用 XML 函数,f。前任。 XML 表。那可能吗?还是仅使用字符串/CLOB 函数?

我们使用 Oracle 19c。

最佳答案

Is that possible?

不,不幸的是,它不是,因为像 XMLTable 这样的 XML 函数与 XMLType 一起工作,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

关于sql - Oracle - 从 XMLType 中的 XML 序言中提取 XML 版本和编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70385916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com