정규식 REGEXP_LIKE 함수 사용하기(Oracle 10g)
* 오라클에서 문자 포함된 관측치 선택 및 제거;
* 입력설계 문제로 고객명에 이상한 값들이 들어가서 그 변수 처리 방법을 찾다가 oracle 10g에 새로운 정규식 함수가 있네요
* 한글인 경우 처리가 좀 애매모호한데 정확한 값을 찾지 못해서 일단 '황' '힛'을 넣었습니다.
* 코드변환을 해서 한글을 찾아야 할듯 함.
SELECT REGEXP_instr(CUST_NM,'[a-z]|[A-Z]'), -- 영문자 위치 반환
a.*
FROM customer.tza011 a
WHERE 1=1
and REGEXP_LIKE(CUST_NM, '[^[:digit:]]') -- 첫글자가 문자
and NOT REGEXP_LIKE(CUST_NM,'[a-z]|[A-Z]') -- 영문자 제외
and NOT REGEXP_LIKE(CUST_NM,'[0-9]|[@/.;*^,★☆#!]|[?]|[-]|[ㄱ-ㅎ]|[ㅏ-ㅣ]') -- 특수문자제회
--and REGEXP_LIKE(CUST_NM, '.*가.*|.*나.*|.*다.*'); -- 가 나다 포함
and NOT REGEXP_LIKE(CUST_NM,'[가-황]') -- 한글제외1
and NOT REGEXP_LIKE(CUST_NM, '[가-힛].*' ) -- 한글제외2
and NOT REGEXP_LIKE(CUST_NM, '[A-Z]|[?@/.히]' ) --특수문자 제외
and NOT REGEXP_LIKE(CUST_NM,'[ㄱ-ㅎ]') -- 자음 포함된 관측치 제외
AND NOT REGEXP_LIKE(CUST_NM,'^[a-z]|[A-Z]'); -- 첫글자가 영문자인경우 제외
<참조예제>
SELECT DISTINCT SNU_EDU_TYPE FROM RM_TEST WHERE NOT REGEXP_LIKE(SNU_EDU_TYPE,'^[0-9]')
- 출처 : 통계분석연구회