본문 바로가기

IT/오라클

오라클 함수 만들기 기본 (휴대폰 번호 체크)

1. 오라클 REPLACE와 TRANSLATE 문자열 변경 ,숫자만 남기기 에서 만들었던 함수이다.

 

CREATE OR REPLACE FUNCTION  parse_int(    -- 함수이름

  VAR_String VARCHAR2 -- 변수

)

RETURN VARCHAR2 

IS

VAR VARCHAR2(13);  --var 로 리턴한다

BEGIN         

VAR :=TRANSLATE(VAR_String, '1234567890'||VAR_String, '1234567890') ; 

    RETURN VAR;                      --var에 var_String에서 숫자가 아닌 것들을 제외하고 저장

END parse_int;        

 

select parse_int('1234dkla52367j8s90k3ld') from dual ;                                        --결과 : 1234523678903

 

 

2. 휴대폰 번호 체크를 만들어 봤습니다.

 - 오라클 10G 이상에서는 정규식 표현을 지원하지만 하위 버전에서 지원안하므로 함수를 이용해서 구현해 봤습니다.

 

CREATE OR REPLACE FUNCTION  PHONENO_CHECK(

  V_PHONE VARCHAR2

)

RETURN VARCHAR2

IS

tmpVar VARCHAR2(1);  

tmpVar2 varchar2(4000); --숫자를 제외한 것 들을 지우고 저장할 변수

BEGIN

tmpVar := 'Y';

tmpVar2:= TRANSLATE(V_PHONE, '1234567890'||V_PHONE, '1234567890') ; --숫자를 제외한 것 들을 지우고 저장

    IF LENGTH(V_PHONE)!=LENGTH(tmpVar2) THEN  -- 길이 체크를 통해 문자가 있었는지 확인

      RETURN 'N';  --문자가 있었으면 N

    END IF;

    IF LPAD(V_PHONE, 2) != '01' THEN --01로 시작하는지 확인

        RETURN 'N';

    END IF;

    IF LPAD(V_PHONE,3) = '010' THEN

      IF LENGTH(V_PHONE) != 11 THEN --010은 11자리 

        RETURN 'N';

      END IF;

    ELSE --나머지는 10자리와 11자리

      IF LENGTH(V_PHONE) !=10 OR LENGTH(V_PHONE) !=11 THEN

        RETURN 'N';

      END IF;

    END IF;

    

    RETURN tmpVar;

END PHONENO_CHECK;