使用regexp_replace转义单引号

时间:2014-11-13 17:26:56

标签: regex oracle11g

我需要用输入列中的空格替换任何特殊字符。此外,还需要抑制任何单引号。

我试过这个替换特殊字符的工作,但是,它不会抑制单引号。

从数据库列输入字符串: '看到糖果?商店合并'

如果我不考虑单引号,那么\ W可以满足第一个条件。

select regexp_replace('SEES CANDY?SHOPS INCORPORATED', '\W', ' ') from dual;

Output: SEES CANDY SHOPS INCORPORATED

然而,需要外出:

通过逃避/抑制它来考虑单引号时,看到糖果商店注册。

1 个答案:

答案 0 :(得分:3)

select regexp_replace('SEES''CANDY?SHOPS_INCORPORATED123', '[^[:alnum:]''_]', ' ') from dual;

[:alnum:]字母数字字符。包括字母和数字。

\W非字符(不是字母,不是数字,不是下划线)。

删除单引号,然后用空格替换\ W:

select regexp_replace(replace(s, ''''), '\W', ' ') 
from (select q'[SEE'S candy?shops_incorporated123]' s from dual);

q'[]'只是一个Oracle引用运算符(允许您在括号内使用单引号而不会将它们加倍以便转义)

相关问题