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
# 예제
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 |
/* - TOPIC 컬럼에 한글이 1~10개 사이인 것을 조회 - 옵션 $ = {}$ 과 사용시에 절대값인듯...? */ 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 ; /* # TOPIC 컬럼에 영어 대소문자가 3~10개 사이 또는 한글이 2~3개 사이인 것을 조회 */ 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 -- 8자리 이상 ; /* # 컬럼 check 제약 조건 */ -- 10자 이하의 한글만 입력 받고자 할때. ALTER TABLE BULLETIN ADD CONSTRAINT BULLETIN_USER_NAME_KO_CHK CHECK (REGEXP_LIKE(USER_NAME_KO, '^[가-힝]{1,10}$' )) ; |
'Database > Oracle' 카테고리의 다른 글
새주소 우편번호 관련 공개 DB자료 내려받기 URL (0) | 2013.04.25 |
---|---|
[펌] 오라클 개행문자 제거 (0) | 2013.04.25 |
오라클 날짜 형식 변경(서버 환경 변경) (0) | 2013.03.25 |
[펌] 오라클과 MySQL의 그룹별 번호 매기기 (0) | 2013.03.18 |
[펌] Oracle 11g For windows 삭제방법 (0) | 2013.02.11 |