WITH t AS ( select '8,117원*1명*25시간*12월' text, 'o' flag from dual union all select '662,000원*120%*1/12월' text, 'x' flag from dual union all select '6,000원*1명*118일' text, 'o' flag from dual union all select '1,100원*0.06827%' text, 'o' flag from dual union all select '10명*1,000원*10개월*25개읍면동' text, 'o' flag from dual union all select '1,080원/22시간*8시간*3명*10일' text, 'o' flag from dual union all select '70,000원*12명*4' text, 'x' flag from dual union all select '5,000원*19명/2*12월' text, 'x' flag from dual union all select '(2,000원*1명+1,000원*1명)*35시간*12월' text, 'o' flag from dual ) select * from t
사칙연산 (*/+-) 기호 바로 앞글자와 맨 마직막 글자는 한글 또는 %, ) 가 아니면 오류로 체크하려고 합니다.
정규식을 이용하여 자동으로 flag를 o, x로 처리할 수 있을까요??
고수님들의 도움 부탁드립니다. ^^;
1. 수치 바로 뒤에 단위(명, 원, % 등등)가 와야 하는 것 같습니다.
- 제시하신 오류자료는 단위 없이 수치만 온 경우 뿐이네요.
- 딱 이런 경우만 체크하면 될지?
2. 또 다른 형태의 오류는 없을런지?
- 괄호가 짝이 안맞는다거나? ((1명*12개월)
- 숫자의 천단위 구분 컴마의 위치가 틀린다거나? 10,00
- 숫자의 소수점이 두개 온다거나? 10.00.01
- 기타 또 다른 형태의 오류는 없는지?
-- 단위 없이 수치만 사용된 자료 찾기 -- SELECT text , CASE WHEN REGEXP_LIKE(text, '[0-9]([)*/+-]|$)') THEN 'x' ELSE 'o' END flag FROM t ;