현업이 아이디가 영어인사람말고 첫번째 글자가 1,2,7인사람들만 유저로쓸게요
  - 이런쀍 그걸 어케찾아....ㅡㅡ; 
  - 오라클 정규표현식 기초 습득 (업데이트 예정, 링크걸어주세요 계속 변경할겁니다.)

--인터넷검색으로 추가

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]');         -- 첫글자가 영문자인경우 제외


 

REGEXP_INSTR 함수
SELECT * FROM (
    SELECT 1, 'A SOMETHING LIKE 154 ST.' TEXT 
    FROM DUAL
    UNION ALL
    SELECT 2, 'B SomeTHING LIKE a-5654 st.' TEXT 
    FROM DUAL
    UNION ALL
    SELECT 3, 'that Is 23-4 ST.' TEXT 
    FROM DUAL
    )
WHERE REGEXP_INSTR(TEXT, '[0-3,t]') = 1

-- 0~3 그리고 t가 첫번째 글자에 있는 문자열을 찾아준다.

REGEXP_LIKE 함수
SELECT * FROM (
    SELECT 4, 123456 TEXT 
    FROM DUAL
    )
WHERE REGEXP_LIKE(TEXT, '[[:digit:]]') 

-- [[:digit:]] : 숫자인가 
-- [^[:digit:]] : 숫자가 아닌가
-- ^ 를 표현식안에쓰게되면 NOT (부정)의 의미가된다. 
-- 주의점 
-- ADB012 는 숫자도아니고 문자도아닌게된다. 위의조건으로 검색을하게되면 전부 조건에 걸리게된다.
-- 숫자+문자 일경우 조심해야한단말쌈~


[ 출처 ] http://blog.naver.com/ssonacy00?Redirect=Log&logNo=123190913

+ Recent posts