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;
'IT > 오라클' 카테고리의 다른 글
plan table 생성 스크립트 (0) | 2014.12.11 |
---|---|
오라클 insert select,update select (오라클 서브쿼리 추가) (0) | 2014.08.12 |
오라클 서브쿼리 (Oracle subquery) (0) | 2014.07.09 |
오라클 REPLACE와 TRANSLATE 문자열 변경 ,숫자만 남기기 (0) | 2014.07.09 |
오라클 데이터 조회(SELECT) 삽입(INSERT) 수정(UPDATE) 삭제(DELETE) (0) | 2014.07.09 |