정규식 REGEXP_LIKE 함수 사용하기(Oracle 10g)

Posted by MD워시퍼
2013. 6. 28. 20:31 Study/Oracle Sql
728x90

* 오라클에서 문자 포함된 관측치 선택 및 제거;

* 입력설계 문제로 고객명에 이상한 값들이 들어가서 그 변수 처리 방법을 찾다가 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]')


- 출처 : 통계분석연구회