2013-10-30 27 views
0

我試圖轉義並在字符串中找到特殊字符。目前我正在使用替換函數來單獨搜索任何特殊字符並在其前面添加\。如下所示。在不使用REPLACE的情況下轉義特殊字符PL/SQL

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

我想知道的是,如果有更清晰的方式來執行此操作?

任何幫助或建議,非常感謝。

+1

你爲什麼要逃跑呢? – Ben

+0

你爲什麼要用''''而不是'\''來轉義'''?另外,最後一個還有一個''''。 –

回答

2

試試這個:

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

輸出:

my\ \'string\'\ with\ special\ \(characters\)
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