2012-05-03 224 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

辉煌的先生,我非常感谢 –