【问题标题】:Search an Oracle clob for special characters that are not escaped在 Oracle Clob 中搜索未转义的特殊字符
【发布时间】:2014-08-13 11:31:02
【问题描述】:

是否可以运行一个查询,该查询可以在 Oracle clob 中搜索包含与号字符的任何记录,其中该字符所在的单词不是以下任何一种(或可能的任何转义码):

 & - &
 < - &lt;
 > - &gt;
 " - &quot;
 ' - &apos;

我想在 & 号之前提取 5 个字符,在 & 号之后提取 5 个字符,这样我就可以看到实际值。 基本上我想搜索包含这些字段的任何记录并将其替换为转义码。

目前我正在做这样的事情:

Select * from articles 
where dbms_lob.instr(article_summary , '&amp' ) = 0 and dbms_lob.instr(article_summary  , '&' )

更新

如果我要使用正则表达式,如果我想检索值是 & 后跟除 'a' 之外的任何字符的所有字段,我将如何指定它?

【问题讨论】:

    标签: sql oracle oracle11g


    【解决方案1】:

    您可以为此使用DBMS_XMLGEN.CONVERT。第二个参数是可选的,如果省略将转义 XML 特殊字符。

    select DBMS_XMLGEN.CONVERT(article_summary)
      from articles;
    

    但是,如果文章摘要包含转义字符和非转义字符的混合,那么这将给出错误的结果。最简单的解决方法是先取消转义字符,然后再转义。

    select DBMS_XMLGEN.CONVERT(
                   DBMS_XMLGEN.CONVERT(article_summary,1)  --1 as parameter does unescaping
                              )
      from articles;
    

    【讨论】:

    • 谢谢,这很有用。我一直在寻找的是我实际上想看到文本而不是逃避它。
    猜你喜欢
    • 1970-01-01
    • 2013-07-13
    • 2013-12-03
    • 2020-11-12
    • 1970-01-01
    • 2016-03-11
    • 2018-08-16
    • 2015-07-06
    • 1970-01-01
    相关资源
    最近更新 更多