是否可以运行一个查询,该查询可以在Oracle clob中搜索包含&符号的任何记录,其中该字符所在的单词不是以下任何一个(或者可能是任何转义码):
& - &
< - <
> - >
" - "
' - '
我想在&符号前提取5个字符,在&符号后提取5个字符,这样我就能看到实际值。 基本上我想搜索包含这些字段的任何记录,并用转义码替换它。
目前我正在做这样的事情:
Select * from articles
where dbms_lob.instr(article_summary , '&' ) = 0 and dbms_lob.instr(article_summary , '&' )
如果我要使用正则表达式,如果我想要检索值为&amp;的所有字段,我将如何指定它?其次是'a'以外的任何字符?
答案 0 :(得分: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;