【问题标题】:Oracle insert replace double quote (") to "Oracle插入替换双引号(“)到”
【发布时间】:2017-10-31 10:43:10
【问题描述】:

我需要替换 Oracle DB 中的大 XML,但插入后,双引号 (") 插入为 &quot:。下面是示例。

输入 XML <Node>"Some text value here"</Node>

插入的 XML <Node>"Some text value here"</Node> 注意 &quot

有人告诉我这里发生了什么吗?这是 Oracle 的默认行为吗?如何解决?

注意:我尝试使用 SQL Developer 插入并得到相同的结果。

【问题讨论】:

  • 为什么要修改这个行为?

标签: xml oracle


【解决方案1】:

是的,这是 xml 的正常行为。
XML 有五个受限字符:< (<), & (&), > (>), " ("), and ' (')。 而且您不必担心。

检查这个例子。

create table example( xml xmltype);

insert into example values ('<Node>"Some text value here"</Node>') ;

select t.xml from example t; 结果为<Node>&quot;Some text value here&quot;</Node>
但是如果你这样做 select extractValue( t.xml,'//text()') from example t ; 则结果是 "Some text value here"

【讨论】:

  • 不幸的是,这在 extract() 函数的情况下不起作用。我在聚合中使用了 extract() 并得到了那些“”符号。
【解决方案2】:

您可以使用 regexp_replace 来解决:

SELECT regexp_replace(e.name, '\&'||'amp;', '&')
FROM element e

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 2015-08-07
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多