Oracle 10g에서는 REGEXP_로 시작하는 함수를 지원합니다. 레귤러 익스프레션 지원이죠. 아래는 그 함수들의 사용방법을 공유합니다.
1. REGEXP_INSTR 함수
- 문법 : REGEXP_INSTR(소스 문자열, Pattern [, 검색 시작 위치 [, 발생 횟수 [, 반환 옵션 [, Match를 시도할 때의 옵션]]]])
- 예제
1 2 3 4 5 6 | SELECT REGEXP_INSTR( 'Regular Expression' , 'a' ) REG_INS
FROM dual;
REG_INS
6
|
2. REGEXP_LIKE
- 문법 : REGEXP_LIKE(소스 문자열, Pattern [, Match를 시도할 때의 옵션])
- [[:digit:]] : 숫자인것
- [^[:digit:]] : 숫자가 아닌것
- [[:alpha:]]
- 필듯가 숫자와 문자가 같이 있을 경우 잘 판단해야 함
- 예제
1 2 3 4 5 6 7 8 9 10 | SELECT SSN
FROM TEST
WHERE SSN > ' '
AND REGEXP_LIKE(SSN, '[^[:digit:]]' );
SSN
******2229149
******2228659
******2223591
|
3. REGEXP_REPLACE
- REGEXP_REPLACE(소스 문자열, Pattern [, 바꿀 문자열 [, 위치 [, 발생횟수 [Match 파라미터]]]])
- 예제
1 2 3 4 5 6 7 8 9 | SELECT REGEXP_REPLACE(SSN, '[0-9]' , '*' , 7) REG_REP
FROM (
SELECT '7901061842210' SSN
FROM dual
);
REG_REP
790106*******
|
4. REGEXP_SUBSTR
- REGEXP_SUBSTR(소스 문자열, Pattern [, 위치 [, 발생 횟수 [, Match를 시도할 때의 옵션]]])
- 예제
1 2 3 4 5 6 7 8 9 | SELECT REGEXP_SUBSTR(EMAIL, '[^@]+' ) REG_SUB
FROM (
SELECT 'pepsi@paran.com' EMAIL
FROM dual
);
REG_S
pepsi
|
위 내용 출처 : http://happybuk.tistory.com/50
# 문자 클래스
[:digit:] : 숫자
[:punct:] : 특수문자
[:alpha:] : 알파벳
기타, 정규표현식 단축 문자, 문자 클래스
# 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | SELECT REGEXP_REPLACE(
'!23$56^*[]<>()~`' ' 숫자, .특수문자 테스트_Test '
, '[[:digit:]|[:punct:]]'
, '' ) AS RESULT
FROM DUAL
;
RESULT
숫자 특수문자 테스트Test
SELECT BULLETIN_SEQ
, TOPIC
, CREATE_ID
FROM BULLETIN
WHERE REGEXP_LIKE(TOPIC, '^[가-힝]{1,10}$' )
ORDER BY 1
;
SELECT BULLETIN_SEQ
, TOPIC
, CREATE_ID
FROM BULLETIN
WHERE REGEXP_LIKE(TOPIC, '^[가-힝]' )
ORDER BY 1
;
SELECT BULLETIN_SEQ
, TOPIC
, CREATE_ID
FROM BULLETIN
WHERE REGEXP_LIKE(TOPIC, '^[a-zA-Z]{3,10}|[가-힝]{2,3}$' )
;
SELECT pw
FROM t
WHERE REGEXP_LIKE(pw, '[a-z]' )
AND REGEXP_LIKE(pw, '[A-Z]' )
AND REGEXP_LIKE(pw, '[0-9]' )
AND REGEXP_LIKE(pw, '[[:punct:]]' )
AND LENGTH(pw) >= 8
;
ALTER TABLE BULLETIN
ADD CONSTRAINT BULLETIN_USER_NAME_KO_CHK
CHECK (REGEXP_LIKE(USER_NAME_KO, '^[가-힝]{1,10}$' ))
;
|
출처 ; http://develop.sunshiny.co.kr/840