我需要用输入列中的空格替换任何特殊字符。此外,还需要抑制任何单引号。
我试过这个替换特殊字符的工作,但是,它不会抑制单引号。
从数据库列输入字符串: '看到糖果?商店合并'
如果我不考虑单引号,那么\ W可以满足第一个条件。
select regexp_replace('SEES CANDY?SHOPS INCORPORATED', '\W', ' ') from dual;
Output: SEES CANDY SHOPS INCORPORATED
然而,需要外出:
通过逃避/抑制它来考虑单引号时,看到糖果商店注册。
答案 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引用运算符(允许您在括号内使用单引号而不会将它们加倍以便转义)