不使用REPLACE转义特殊字符PL / SQL

时间:2013-10-30 20:18:49

标签: oracle plsql oracle10g escaping

我正在尝试逃避并在字符串中找到特殊字符。目前我正在使用替换功能单独搜索任何特殊字符并在其前面添加\。如下图所示。

directory := replace(directory, ' ', '\ ');
directory := replace(directory, '(', '\(');
directory := replace(directory, ')', '\)');
directory := replace(directory, '''', ''\'');
etc

我想知道的是,是否有更简洁的方法来执行此操作?

非常感谢任何帮助或建议。

2 个答案:

答案 0 :(得分:3)

试试这个:

SELECT
  regexp_replace('my ''string'' with special (characters)', '([() ''])', '\\\1')
FROM
  dual;

输出:

my\ \'string\'\ with\ special\ \(characters\)

答案 1 :(得分:0)

取代什么:

SELECT  REGEXP_REPLACE(str, '\w') AS output
FROM
(
        SELECT  'perl -pe ''$_ .= "\n" unless /^$/''' AS str
        FROM    DUAL
);

结果:

 - '$ .= "\"  /^$/'

当它被删除时:

SELECT  REGEXP_REPLACE(str, '\W') AS output
FROM
(
        SELECT  'perl -pe ''$_ .= "\n" unless /^$/''' AS str
        FROM    DUAL
);

结果:

perlpe_nunless