Database/Oracle PLSQL

PLSQL REGEXP_LIKE

Riz.Dev 2023. 4. 12. 18:52

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'으로 끝나는 모든 연락처를 반환합니다.


< 이전 / 다음 : NOT >