문자에 산식이 들어 잇는데 그것을 계산 하는 방법이 있나요? 0 2 3,331

by 정민호 [SQL Query] [2010.07.28 09:36:38]


db에 "P*Q" 가 들어있어서 p를 1000 로 q를 3 으로 바꿔서
계산하여 3000 이 나오도록 할려고합니다.


REPLACE(REPLACE(TRIM(COMP_TYP_CNTNT),'P',1000'), 'Q','1')

여기까지는 REPLACE를 이용해서 햇는데 어떻게 값을 추출할지 몰라서요.. ^^
by 마농 [2010.07.28 10:15:50]
그냥 쿼리만으로는 안되구요.
변형시킨 식을 가지고 execute immediate 를 이용하셔야 합니다.
식을 입력받아 값을 리턴하는 함수를 하나 만드시는게 좋겠네요.

CREATE OR REPLACE FUNCTION f_calculation(sCalc VARCHAR2)
RETURN NUMBER IS
sSql VARCHAR2(100);
nRtn NUMBER;
BEGIN
sSql := 'SELECT ' || sCalc || ' FROM dual';
EXECUTE IMMEDIATE (sSql) INTO nRtn;
RETURN nRtn;
EXCEPTION
WHEN OTHERS THEN
RETURN Null;
END;
/

SELECT f_calculation('1000*3') v FROM dual;

by 정민호 [2010.07.28 13:05:01]
감사합니다.
그런데... FUNCTION 이 불가능하다고 하네요. 그래서 LANGUAGE 에서 LOOP 돌면서 계산해야되게어요. ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입