如何替换 或使用XMLELEMENT Oracle时的任何特殊字符

Raj*_*j A 8 sql database oracle plsql

我有以下查询.如何保持撇号(')完整,而不是让它被替换为&apos 还有其他字符我也想处理&

SELECT RTRIM(xmlagg(XMLELEMENT(E,'I''m'||':')).extract('//text()'),':')
  FROM dual;
Run Code Online (Sandbox Code Playgroud)

输出:

I'm
Run Code Online (Sandbox Code Playgroud)

谢谢.

Nic*_*nov 13

您可以特别使用utl_i18n包和unescape_reference()函数.这是一个例子:

clear screen;
column res format a7;

select utl_i18n.unescape_reference(
          rtrim(
               xmlagg( -- use of xmlagg() function in 
                       -- this situation seems to be unnecessary 
                       XMLELEMENT(E,'I''m'||':')
                      ).extract('//text()'),':'
                )
        ) as res
 from dual;
Run Code Online (Sandbox Code Playgroud)

结果:

RES   
-------
I'm  
Run Code Online (Sandbox Code Playgroud)

  • 这个有4000个字符的限制 (2认同)
  • @Skoffer是的.要克服这个限制,可以使用`dbms_xmlgen`包,特别是`convert()`函数[可以使用](http://stackoverflow.com/questions/23683423/is-oracles-extract-function-breaking-the-noentityescaping-in -the-XMLELEMENT/23684068#23684068) (2认同)

Too*_*kit 8

SELECT dbms_xmlgen.convert( xmlagg(XMLELEMENT(E,'I''m'
  ||':')).extract('//text()').getclobval() ,1)
FROM dual;
Run Code Online (Sandbox Code Playgroud)

我是:


归档时间:

查看次数:

17862 次

最近记录:

8 年,11 月 前