2014-06-16 66 views
0

我需要一個簡單的替換函數,它將分號分隔的字符串替換爲帶引號的逗號分隔字符串。Oracle REGEXP_REPLACE替換;帶引號的字符串的分隔字符串

'123; Asd; _P1;'替換爲'123','Asd','_P1'

試過這個,但最後一個字符串錯過了引號,並且字符串可以有其他字符。

SELECT REGEXP_REPLACE('123;234;345;123','([[:alnum:]]+);', '''\1'',') List FROM DUAL;

回答

1

我不認爲你需要regexp_replace這裏,一個簡單的replace應該是足夠的。它似乎只是想用字符串「','」替換一個分號,然後在字符串之前和之後添加一個單引號。

select q'{'}' || 
     replace('123;234;345;123', ';', q'{','}') || 
     q'{'}' 
    from dual 
+0

謝謝您的幫助。這工作。 –

+0

我無法使其在WHERE子句中工作。 'WHERE Col1 IN(q'{'}'|| replace('MK2.3; P002; 0001112',';',q'{','}')|| q'{'}'))'Can你請讓我知道我錯過了什麼? –

+0

@AnitaKulkarni - 那是因爲你問了一個錯誤的問題。您不能使用字符串變換將單個分隔字符串更改爲'WHERE'子句中的一組字符串。您可以解析分隔字符串來填充集合並在查詢中使用該集合https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:110612348061 –

0

SELECT REGEXP_REPLACE(REGEXP_REPLACE('123;234;345;123','([[:alnum:]]+);', '''\1'','), ',([[:alnum:]]+)', ',''\1''') FROM DUAL;

+0

如果這些字段包含除字母數字之外的字符? (例如'_P1') – tbone

+0

賈斯汀的答案適用於任何字符。 –

相關問題