2012-05-03 222 views
1

我希望對以下正則表達式有所幫助。正則表達式來替換零

00 should be replaced by Null 
01 should be left as it is 
0 should be replaced by Null 

如果有一個0或兩個0的話就應該由空的

我嘗試更換爲

select regexp_replace('0','^0',NULL) from dual 

,但我的代碼不會對正常運行的01

得到這個工作使用

select regexp_replace('01','^0(0)?',NULL) from dual 
+0

你不能這樣做與REGEXP_REPLACE聲明,因爲它會用替代字符串值。你需要案件。 – fge

+0

您更新的答案/解決方案將僅替換前一個或兩個零。如果您只想要替換最多兩個零的字符串,請參閱我的更新答案。 – Lukazoid

回答

2

這是行得通嗎?

select regexp_replace('0','^0+$',NULL) from dual 

我相信這應該更換其中只包含0與空的字符串。

我從here得到了oracle正則表達式語法。

如果你只是想更新一個或兩個零的字符串,請使用下列內容:

select regexp_replace('0','^0{1,2}$',NULL) from dual 

select regexp_replace('0','^0(0)?$',NULL) from dual 
+0

我會接受你的答案你可以請讓我知道你的正則表達式在英語中的含義.stackoverflow要求我等待10分鐘,然後我接受你的回答 –

+0

'^'表示字符串的開始,'0 +'表示1或更多的零,'$'表示字符串的結尾。所以這將取代任何由一個或多個零組成的字符串。 – Lukazoid

+0

輝煌的先生,我非常感謝 –