반응형
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}$')) ; |
출처 : http://develop.sunshiny.kr/840
반응형
'Oracle(DB관련)' 카테고리의 다른 글
table 권한 조회 (0) | 2022.02.11 |
---|---|
Oralce rollup, cube, grouping sets (0) | 2022.02.04 |
FTP From PL/SQL (0) | 2021.07.14 |
oracle 독립 트랜잭션 pragma autonomous_transaction (0) | 2021.04.13 |
Oracle table, tablespace 용량 확인 (0) | 2021.03.19 |