使用 XMLELEMENT Oracle 时如何替换 ' 或任何特殊字符
Posted
技术标签:
【中文标题】使用 XMLELEMENT Oracle 时如何替换 \' 或任何特殊字符【英文标题】:How to replace ' or any special character in when using XMLELEMENT Oracle使用 XMLELEMENT Oracle 时如何替换 ' 或任何特殊字符 【发布时间】:2014-06-15 16:20:35 【问题描述】:我有以下查询。如何保持撇号 ('
) 完整且不被 &apos
替换
我还想处理其他字符,例如&
SELECT RTRIM(XMLAGG(XMLELEMENT(E,'I''m'||':')).EXTRACT('//text()'),':')
FROM dual;
输出:
I'm
谢谢。
【问题讨论】:
【参考方案1】:您可以特别使用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
【讨论】:
这个有4000个字符的限制 @Skoffer 是的。为了克服这个限制dbms_xmlgen
包,特别是convert()
函数can be used
这有帮助。谢谢。【参考方案2】:
SELECT dbms_xmlgen.convert( xmlagg(XMLELEMENT(E,'I''m'
||':')).extract('//text()').getclobval() ,1)
FROM dual;
我是:
【讨论】:
非常感谢!它也很不错,但它在 HUGECLOB 中获得了输出以上是关于使用 XMLELEMENT Oracle 时如何替换 ' 或任何特殊字符的主要内容,如果未能解决你的问题,请参考以下文章