0

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

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

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

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

4

2 回答 2

3

试试这个:

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

输出:

my\ \'string\'\ with\ special\ \(characters\)
于 2013-10-30T20:40:00.393 回答
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
于 2013-10-31T09:50:08.403 回答