Oracle / PLSQL : REGEXP_LIKE 조건
이 Oracle 튜토리얼에서는 정규식 일치를 수행하기 위해 Oracle REGEXP_LIKE 조건을 사용하는 방법을 구문 및 예제와 함께 설명합니다.
- 단순 패턴 일치를 수행하는 LIKE 조건과 혼동하지 마세요.
설명
Oracle REGEXP_LIKE 조건을 사용하면 SELECT, INSERT, UPDATE 또는 DELETE 문의 WHERE 절에서 정규식 일치를 수행할 수 있습니다.
구문
Oracle/PLSQL에서 REGEXP_LIKE 조건의 구문은 다음과 같습니다.
REGEXP_LIKE ( expression, pattern [, match_parameter ] )
매개 변수 및 인수
expression(표현식)
열 또는 필드와 같은 문자 표현식입니다. VARCHAR2, CHAR, NVARCHAR2, NCHAR, CLOB, NCLOB 데이터 유형이 될 수 있습니다.
pattern
일치하는 정규식 정보입니다. 다음의 조합일 수 있습니다.
값 | 설명 |
---|---|
^ | 문자열의 시작 부분을 일치시킵니다. 일치 매개 변수가 'm'인 경우 표현식 내 어디에서나 줄의 시작 부분을 일치시킵니다. |
$ | 문자열의 끝을 일치시킵니다. match_parameter가 'm'인 경우 표현식 내 어디에서든 줄의 끝을 일치시킵니다. |
* | 0개 이상의 항목을 일치시킵니다. |
+ | 하나 이상의 항목을 일치시킵니다. |
? | 0개 또는 하나의 발생과 일치합니다. |
. | NULL을 제외한 모든 문자를 일치시킵니다. |
| | 둘 이상의 대안을 지정할 때 "OR"처럼 사용됩니다. |
[ ] | 목록에 있는 문자 중 하나를 일치시키려는 일치 목록을 지정하는 데 사용됩니다. |
[^ ] | 목록에 있는 문자를 제외한 모든 문자를 일치시키려는 비매칭 목록을 지정하는 데 사용됩니다. |
( ) | 표현식을 하위 표현식으로 그룹화하는 데 사용됩니다. |
{m} | m번 일치합니다. |
{m,} | m회 이상 일치합니다. |
{m,n} | m회 이상 일치하지만 n회 이하 일치합니다. |
\n | n은 1에서 9 사이의 숫자입니다. n을 만나기 전에 ( ) 내에서 발견되는 n번째 하위 식을 일치시킵니다. |
[...] | 두 개 이상의 문자가 될 수 있는 데이터 정렬 요소를 하나 일치시킵니다. |
[::] | 문자 클래스를 일치시킵니다. |
[==] | 동등성 클래스를 일치시킵니다. |
\d | 자릿수 문자를 일치시킵니다. |
\D | 자릿수가 아닌 문자를 일치시킵니다. |
\w | 단어 문자를 일치시킵니다. |
\W | 단어가 아닌 문자를 일치시킵니다. |
\s | 공백 문자와 일치시킵니다. |
\S | 공백이 아닌 문자와 일치시킵니다. |
\A | 문자열의 시작 부분과 일치하거나 문자열의 끝에서 개행 문자 앞에 일치합니다. |
\Z | 문자열의 끝에서 일치합니다. |
*? | 앞의 패턴이 0번 이상 발생하면 일치합니다. |
+? | 이전 패턴과 한 번 이상 일치합니다. |
?? | 앞의 패턴을 0번 또는 한 번 일치시킵니다. |
{n}? | 앞의 패턴을 n번 일치시킵니다. |
{n,}? | 앞의 패턴과 n번 이상 일치합니다. |
{n,m}? | 앞의 패턴과 n회 이상 일치하지만 m회 이하로 일치합니다. |
match_parameter
- 선택 사항입니다. REGEXP_LIKE 조건에 대한 일치 동작을 수정할 수 있습니다. 다음과 같은 조합이 가능합니다.
값 | 설명 |
---|---|
'c' | 대소문자 구분 매칭을 수행합니다. |
'i' | 대소문자를 구분하지 않는 일치를 수행합니다. |
'n' | 마침표 문자(.)가 개행 문자와 일치하도록 허용합니다. 기본적으로 마침표는 와일드카드입니다. |
'm' | 표현식은 표현식에서 해당 문자의 위치에 관계없이 ^는 한 줄의 시작이고 $는 한 줄의 끝인 여러 줄이 있는 것으로 가정합니다. 기본적으로 표현식은 한 줄로 간주됩니다. |
'x' | 공백 문자는 무시됩니다. 기본적으로 공백 문자는 다른 문자와 마찬가지로 일치합니다. |
참고
- REGEXP_LIKE 조건은 입력 문자 집합을 사용하여 문자열을 평가합니다.
- 충돌하는 match_parameter 값을 지정하는 경우 REGEXP_LIKE 조건은 마지막 값을 사용하여 충돌을 끊습니다.
- match_parameter가 생략된 경우 REGEXP_LIKE 조건은 NLS_SORT 매개 변수에 의해 결정된 대로 대/소문자 구분을 사용합니다.
- Oracle LIKE 조건도 참조하십시오.
예제 - 둘 이상의 대안에서 일치
첫 번째로 살펴볼 Oracle REGEXP_LIKE 조건의 예는 |
패턴을 사용하는 것입니다.
Oracle REGEXP_LIKE 조건에서 |
패턴이 어떻게 작동하는지 설명하겠습니다.
SELECT last_name
FROM contacts
WHERE REGEXP_LIKE (last_name, 'Anders(o|e|a)n');
이 REGEXP_LIKE 예는 last_name이 Anderson, Andersen, Andersan인 모든 연락처를 반환합니다. 패턴은 문자 "o", "e" 또는 "a"를 찾도록 지시합니다.
예제 - 시작 부분 일치
다음으로 REGEXP_LIKE 조건을 사용하여 문자열의 시작 부분에 일치시켜 보겠습니다.
SELECT last_name
FROM contacts
WHERE REGEXP_LIKE (last_name, '^A(*)');
이 REGEXP_LIKE 예제는 last_name이 'A'로 시작하는 모든 연락처를 반환합니다.
예제 - 끝 부분 일치
다음으로 REGEXP_LIKE 조건을 사용하여 문자열 끝에서 일치시켜 보겠습니다.
SELECT last_name
FROM contacts
WHERE REGEXP_LIKE (last_name, '(*)n$');
이 REGEXP_LIKE 예제는 last_name이 'n'으로 끝나는 모든 연락처를 반환합니다.
'Database > Oracle PLSQL' 카테고리의 다른 글
PLSQL ALIASES (0) | 2023.04.14 |
---|---|
PLSQL NOT (0) | 2023.04.14 |
PLSQL LIKE (0) | 2023.04.11 |
PLSQL IS NOT NULL (0) | 2023.04.11 |
PLSQL IS NULL (0) | 2023.04.11 |