어느 가을날의 전환점

ORACLE|오라클에서 숫자 한글(국문) 표기하기 본문

Database/Oracle

ORACLE|오라클에서 숫자 한글(국문) 표기하기

어느가을빛 2014. 11. 27. 14:53
SELECT 1234567890
     , TRANSLATE(
       REGEXP_REPLACE(
       REGEXP_REPLACE(
       REGEXP_REPLACE(
       LPAD(amt,16,'0')
       , '(.)(.)(.)(.)', '\1천\2백\3십\4 ')
       , '(.*) (.*) (.*) (.*) ', '\1조\2억\3만\4')
       , '0천0백0십0.|0[천백십]', '')
       , '1234567890', '일이삼사오육칠팔구') v
  FROM DUAL
;

CREATE OR REPLACE FUNCTION KVHS_DEV."SF_GET_NUMTOKOR

(

    tmp_str IN VARCHAR2

)

RETURN VARCHAR2 AS


    U1       VARCHAR2(27) := '일이삼사오육칠팔구';

    U2       VARCHAR2(50) := ' 십백천만십백천억십백천조십백천';

    RESULT   VARCHAR2(256) := '';

    NUM      INTEGER;

    ZERO_CNT INTEGER := 0;


BEGIN


    IF tmp_str IS NULL THEN

        RESULT := NULL;

    ELSE

        FOR i IN REVERSE 1 .. LENGTH(tmp_str)

        LOOP


            NUM := TO_NUMBER(SUBSTR(tmp_str,LENGTH(tmp_str)-i+1,1));


            IF NUM > 0 THEN

                RESULT := RESULT||SUBSTR(U1,NUM,1)||SUBSTR(U2,i,1);

                ZERO_CNT := 0;

            ELSE

                ZERO_CNT := ZERO_CNT + 1;


                IF i IN (13,9,5) AND ZERO_CNT < 4 THEN

                 RESULT := RESULT||SUBSTR(U2,i,1);

                END IF;

            END IF;


            END LOOP;

    END IF;


    RETURN TRIM(RESULT);

END SF_GET_NUMTOKOR;

/


Comments