현업이 아이디가 영어인사람말고 첫번째 글자가 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_LIKE 함수 사용하기(Oracle 10g)|작성자 백승민
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 는 숫자도아니고 문자도아닌게된다. 위의조건으로 검색을하게되면 전부 조건에 걸리게된다.
-- 숫자+문자 일경우 조심해야한단말쌈~
[출처] Oracle REGEXP(정규식) 사용법|작성자 송과장님
[ 출처 ] http://blog.naver.com/ssonacy00?Redirect=Log&logNo=123190913
'DataBase > Sql' 카테고리의 다른 글
[Sql] Oracle - MONTHS_BETWEEN 월단위 계산 (0) | 2011.07.28 |
---|---|
[Sql] Oracle - OVER(), RANK(), ROW_NUMBER() (0) | 2011.07.28 |
[Sql] Oracle - Self Training 오라클 정리 (0) | 2011.07.12 |
[Sql] NVL(컬럼명, 0) 대신에 getDouble("컬럼명") 을 사용하자. (0) | 2011.06.21 |
[Sql] Oracle - CASE WHEN THEN ELSE END (0) | 2011.02.23 |