반응형
오라클 SQL 에서도 REGEXP 함수를 사용하여 정규식을 사용할 수 있다.
1. 정규식 함수
▶ REGEXP_LIKE
단순한 LIKE 검색 이상의 정규식 일치를 수행하는 데 사용하며, boolean을 반환한다.
REGEXP_LIKE ( string, pattern [, matching parameter ] )
REGEXP_LIKE ( 해당 문자열, 정규식 패턴 [, 매칭 매개변수] )
- string : 검색될 문자열
- pattern : 정규식 패턴
- matching parameter : 매칭 파라미터
- 'i' : 대소문자를 구분하지 않음
- 'c' : 대소문자를 구분함 (기본값)
- 'n' : 마침표(.) 문자가 새 라인과 일치하도록 함
- 'm' : 소스 문자열을 앵커 문자(^ | $)를 활성화하는 여러 줄로 처리함
- 'x' : 공백 문자를 무시함
-- first_name이 'A'로 시작하는 것
SELECT first_name
FROM people
WHERE REGEXP_LIKE (last_name, '^A(*)');
-- first_name이 'z'으로 끝나는 것
SELECT first_name
FROM people
WHERE REGEXP_LIKE (last_name, '(*)z$');
▶ REGEXP_REPLACE
문자열에서 패턴을 검색하고 해당 패턴이 발생한 항목을 지정된 문자열로 바꾼다.
REGEXP_REPLACE( string, pattern [, replacement_string [, start_position [, nth_appearance [, matching parameter ] ] ] ] )
REGEXP_REPLACE( 해당 문자열, 정규식 패턴, [, 대체문자열 [, 시작위치 [, 일치횟수 [, 매칭 매개변수 ] ] ] ] )
- replacement_string : 해당 문자열과 패턴이 일치할 때 대체될 문자, 생략할 시 패턴과 일치하는 문자가 제거
- start_position : 시작위치(검색 시작 위치를 지정, 기본값 1)
- nth_appearance : 일치횟수(n번째 일치된 문자열을 대체, 기본값은 0이며 모든 값을 대체)
-- 'Anderson' 에서 a,e,i,o,u 를 첫번째 자리부터 모두 찾아 'G'로 변경
SELECT REGEXP_REPLACE ('Anderson', 'a|e|i|o|u', 'G', 1, 0, 'i')
FROM dual;
-- Result: 'GndGrsGn'
-- 지정된 문자열의 숫자를 모두 '#'으로 바꿈
SELECT REGEXP_REPLACE ('2, 5, and 10 are numbers in this example', '\d', '#')
FROM dual;
-- Result: '#, #, and ## are numbers in this example'
▶ REGEXP_INSTR
정규식 패턴이 발생하는지 문자열을 검색하고 일치 항목이 있는 문자열의 위치(숫자 값)를 반환(미일치시 0 반환)
REGEXP_INSTR( string, pattern [, start_position [, nth_appearance [, return_option [, matching parameter ] ] ] ] )
REGEXP_INSTR( 해당 문자열, 정규식패턴 [, 시작위치 [, 일치횟수 [, 반환할 문자위치 [, 매칭 파라미터 ] ] ] ] )
- return_option : 반환할 문자 위치(생략시 기본값은 0이며, 첫번째 문자의 위치를 반환)
-- 'ow'가 처음 나타나는 위치를 반환
SELECT REGEXP_INSTR ('The example shows how to use the REGEXP_INSTR function', 'ow', 1, 1, 0, 'i')
FROM dual;
-- Result: 15
▶ REGEXP_SUBSTR
지정된 정규식 패턴과 일치하는 하위 문자열을 반환
REGEXP_SUBSTR( string, pattern [, start_position [, nth_appearance [, match_parameter ] ] ] )
REGEXP_SUBSTR( 해당 문자열, 정규식패턴 [, 시작위치 [, 일치횟수 [, 매칭 파라미터 ] ] ] )
-- first_name에서 첫 번째 모음(a,e,i,o,u)이 나타나면 반환
SELECT REGEXP_SUBSTR (first_name, 'a|e|i|o|u', 1, 1, 'i') AS "First Vowel"
FROM contacts;
2. 정규식 패턴
표현 | 설명 |
^ | 문자열의 시작 부분과 일치. 매칭 파라미터의 m 옵션이 활성화되면 표현식을 사용하는 모든 행의 시작과 일치 |
$ | 문자열의 끝 부분과 일치. 매칭 파라미터의 m 옵션이 활성화되면 표현식을 사용하는 모든 행의 끝과 일치 |
* | 0개 이상 (zero or more) 일치 |
+ | 하나 이상 (one or more) 일치 |
? | 0 또는 1개 일치 (zero or one) |
. | NULL을 제외한 모든 문자와 일치 |
| | OR |
[ ] | [ ]에 있는 문자 중 하나를 일치시키려는 목록을 지정 |
[^ ] | [ ]에 있는 문자를 제외한 모든 문자를 일치시키려는 리스트 지정 |
( ) | 표현식을 하위 표현식으로 그룹화하는데 사용 |
{m} | m번 일치 |
{m,} | 적어도 m번 일치 |
{m,n} | 적어도 m번 일치 ~ n번 이하 일치 |
\n | () 번째 하위 표현식과 일치 |
[..] | 하나 이상의 문자가 될 수 있는 하나의 집합요소와 일치 |
[::] | 문자 클래스와 일치. [:digit:], [:punct:], [:alpha:] 등 |
[==] | equivalence 클래스와 일치 |
\d | 숫자와 일치 |
\D | 숫자가 아닌 것과 일치 |
\w | 영문자 숫자 밑줄문자(_) 와 일치 |
\W | 영문자 숫자 밑줄문자(_) 이외의 문자와 일치 |
\s | 공백문자와 일치 |
\S | 공백이 아닌 문자와 일치 |
\A | 문자열의 시작 부분과 일치, 혹은 새 행의 문자 앞에 있는 문자열의 끝 부분과 일치 |
\Z | 문자열의 끝과 일치 |
*? | 앞선 패턴이 0번 이상 발생 |
+? | 앞선 패턴이 한 번 이상 발생 |
?? | 앞선 패턴이 0 또는 1번 발생 |
{n}? | 앞선 패턴이 n번 일치 |
{n,}? | 앞선 패턴이 적어도 n번 일치 |
{n,m}? | 앞선 패턴이 적어도 n번 ~ m번 이하 일치 |
반응형
'Database > Oracle' 카테고리의 다른 글
[Oracle] ORA-01810: 형식 코드가 두 번 나타났습니다 (0) | 2022.01.14 |
---|---|
[Oracle] ORA-01861: 리터럴이 형식 문자열과 일치하지 않음 (0) | 2022.01.11 |
[Oracle] SELECT문 ROW 순번 메겨 조회하기 (0) | 2021.12.25 |
[Oracle] 오라클 최근 저장된 데이터 가져오기 (0) | 2021.11.16 |
[ORACLE] SQL DEVELOPER 화면 접속창이 사라졌을때 (2) | 2021.10.06 |
최근댓글