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

时间:2014-04-29 15:55:29

标签: sql database oracle plsql

我有以下查询。如何保持撇号(')完好无损并且不被&apos取代 我还想处理其他字符,如&

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

输出:

I'm

感谢。

2 个答案:

答案 0 :(得分:12)

您可以特别使用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;

结果:

RES   
-------
I'm  

答案 1 :(得分:3)

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

I' M: