안녕하세요~
현재 테이블에 등록된 컬럼의 문자열의 수식으로 계산된 금액을 만들고 싶습니다.
txt컬럼 문자열로 등록이 되어 있는데 %,숫자,점, 사칙연산, 괄호 숫자 계산에 필요한 항목을 제외한 내역을 제거합니다.
현재 이부분까지는 해결이 되었는데요
불필요한 내역이 제거된 문자열로 계산을 해야 하는데요
to_number와 같은 함수가 먹히지 않아서요
txt내역으로 amt의 금액일 생성 할 수 있을까요?
with t as
(
select '1,027,274,000원*84%*20일*1/12*1/30*0.55' as txt , 26367000 as amt from dual
union all
select '9,758원*150%*4명*12월*30시간', 21078000 from dual
union all
select '10,000,000원', 10000000 from dual
union all
select '100*10mm', 1000 from dual
)
select txt, amt,REGEXP_REPLACE( replace( replace(txt,',',''),'%','*0.01'),'[^0-9()., ^\*/+-]','')
from t;
txt | amt | 불필요내역제거컬럼 |
1,027,274,000원*84%*20일*1/12*1/30*0.55 | 26367000 | 1027274000*84*0.01*20*1/12*1/30*0.55 |
9,758원*150%*4명*12월*30시간 | 21078000 | 9758*150*0.01*4*12*30 |
10,000,000원 | 10000000 | 10000000 |
100*10mm | 1000 | 100*10 |
네 감사합니다.
덕분에 해결 했어요!!
with t as
(
select '1,027,274,000원*84%*20일*1/12*1/30*0.55' as txt , 26367000 as amt from dual
union all
select '9,758원*150%*4명*12월*30시간', 21078000 from dual
union all
select '10,000,000원', 10000000 from dual
union all
select '100*10mm', 1000 from dual
)
select to_number( DBMS_XMLGEN.GETXMLTYPE('select '||REGEXP_REPLACE( replace( replace(txt,',',''),'%','*0.01'),'[^0-9()., ^\*/+-]','') ||' from dual').EXTRACT('//text()') ) val, txt, amt
from t;