2012-05-03 2 views
1

다음 정규 표현식에 대한 도움이 필요합니다.0을 대체 할 정규식

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

는 0의 그 때 널의

내 시도로 대체되어야한다

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

0 또는 두 가지이다 하나가되면하지만 내 코드에 대한 올바른 작동하지 않습니다 01

이것을 사용하여 작업 할 수 있습니다.

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

문자열 값. 필요한 경우입니다. – fge

+0

업데이트 된 답변/솔루션은 첫 번째 하나 또는 두 개의 0 만 대체합니다. 혹시 최대 두 개의 0의 문자열을 대체하려는 경우, 내 업데이트 된 답변을 참조하십시오. – Lukazoid

답변

2

작동합니까?

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

이것은 NULL이 0 인 문자열을 대체해야한다고 생각합니다.

here에서 oracle 정규식 구문을 받았습니다.

당신은 하나 또는 두 개의 제로의 문자열을 업데이트 할 경우, 다음을 사용 :

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

또는

select regexp_replace('0','^0(0)?$',NULL) from dual 
당신은 REGEXP_REPLACE 문 그것으로 대체하기 때문에 그렇게 할 수 없습니다
+0

나는 당신의 답을 받아 들일 것이다. 당신의 정규식이 영어로 무엇을 의미하는지 알려주시겠습니까? 대답을 기다리기 전에 10 분을 기다려야합니다. –

+0

'^'는 문자열의 시작을 의미하고,'0 +'은 1 또는 '0'은 문자열의 끝을 의미합니다. 그래서 이것은 단지 하나 이상의 0으로 구성된 문자열을 대체 할 것입니다. – Lukazoid

+0

눈부신 선생님, 대단히 감사합니다. –