Oracle中的Regexp替换不能按预期工作

时间:2018-01-10 05:43:30

标签: oracle regexp-replace

  1. 我想从下面的字符串中删除Bus\.,并希望替换为Business。我正在尝试

    SELECT REGEXP_REPLACE('CSP-Junior Associate (Bus\. Analyst equivalent)','Bus\.','Business')
    FROM DUAL
    

    但它无效。

  2. 我想从下面的字符串中删除\,并希望替换为空格。我正在尝试

    SELECT REGEXP_REPLACE('CSP-Junior Associate (Bus\. Analyst equivalent)','\','')
    FROM DUAL
    

    但它无效。

2 个答案:

答案 0 :(得分:0)

第一个为我工作,第二个在你的例子中缺少一个反斜杠,但我怀疑你只需要在REGEXP_REPLACE()'\\'的第二个参数中将其转义:

SELECT REGEXP_REPLACE('CSP-Junior Associate\(Bus. Analyst equivalent)','\\','') FROM DUAL

答案 1 :(得分:0)

对于第一个,您需要使用\\进行转义,因此请尝试

 SELECT REGEXP_REPLACE ('CSP-Junior Associate (Bus\. Analyst equivalent)',
                           'Bus\\.',
                           'Business')
      FROM DUAL

输出

CSP-Junior Associate (Business Analyst equivalent) 

第二个也是这样

SELECT REGEXP_REPLACE ('CSP-Junior Associate (Bus\. Analyst equivalent)',
                       '\\',
                       '')
  FROM DUAL