카테고리:

문자열 함수(정규식)

[ NOT ] RLIKE

문자열이 지정된 패턴과 일치하는지 여부를 확인하기 위해 비교를 수행합니다. 두 입력 모두 텍스트 식이어야 합니다.

RLIKE는 [ NOT ] LIKE 함수와 유사하지만, SQL LIKE 패턴 구문 대신 POSIX 확장 정규식을 사용합니다. 이 함수는 LIKE보다 더 복잡한 일치 조건을 지원합니다.

검색 최적화 서비스를 사용하여 이 함수를 호출하는 쿼리의 성능을 향상할 수 있습니다. 자세한 내용은 검색 최적화 서비스 섹션을 참조하십시오.

별칭:

[ NOT ] REGEXP (두 번째 구문) , REGEXP_LIKE (첫 번째 구문)

문자열 함수(정규식) 항목도 참조하십시오.

구문

-- 1st syntax
RLIKE( <subject> , <pattern> [ , <parameters> ] )

-- 2nd syntax
<subject> [ NOT ] RLIKE <pattern>
Copy

인자

필수:

subject

일치할 주제입니다.

pattern

일치할 패턴입니다.

선택 사항:

parameters

일치 항목을 검색하는 데 사용되는 매개 변수를 지정하는 하나 이상의 문자로 된 문자열입니다. 지원되는 값:

c , i , m , e , s

자세한 내용은 정규식에 매개 변수 지정하기 섹션을 참조하십시오.

기본값: c

반환

BOOLEAN 또는 NULL을 반환합니다.

  • RLIKE가 지정된 경우 일치하는 항목이 있으면 값은 TRUE입니다. 그렇지 않으면 FALSE를 반환합니다.

  • NOT RLIKE가 지정된 경우 일치하는 항목이 없으면 값은 TRUE입니다. 그렇지 않으면 FALSE를 반환합니다.

  • RLIKE 또는 NOT RLIKE가 지정된 경우 인자가 NULL이면 NULL을 반환합니다.

사용법 노트

  • 이 함수는 암시적으로 패턴을 양쪽 끝에 고정합니다(즉, '' 는 자동으로 '^$' 가 되고 'ABC' 는 자동으로 '^ABC$' 가 됨). ABC로 시작하는 문자열을 찾으려면 패턴은 'ABC.*' 가 됩니다.

  • 백슬래시 문자(\)는 이스케이프 문자입니다. 자세한 내용은 작은따옴표로 묶인 문자열 상수에서 정규식 지정하기 섹션을 참조하십시오.

  • 더 많은 사용법 노트는 정규식 함수에 대한 일반적인 사용법 노트 를 참조하십시오.

데이터 정렬 세부 정보

Arguments with collation specifications are currently not supported.

다음 명령을 실행하여 이 항목의 예제를 위한 데이터를 설정합니다.

CREATE OR REPLACE TABLE rlike_ex(city varchar(20));
INSERT INTO rlike_ex VALUES ('Sacramento'), ('San Francisco'), ('San Jose'), (null);
Copy

첫 번째 구문

다음 예에서는 와일드카드를 사용하여 대/소문자를 구분하지 않는 패턴 일치를 수행합니다.

SELECT * FROM rlike_ex WHERE RLIKE(city, 'san.*', 'i');
Copy
+---------------+
| CITY          |
|---------------|
| San Francisco |
| San Jose      |
+---------------+
SELECT * FROM rlike_ex WHERE NOT RLIKE(city, 'san.*', 'i');
Copy
+------------+
| CITY       |
|------------|
| Sacramento |
+------------+

다음 예에서는 문자열이 전화 번호 및 이메일 주소의 형식과 일치하는지 확인합니다. 이들 예에서 정규식은 달러 기호로 묶인 문자열 에 지정되어 정규식에서 백슬래시 이스케이프를 방지합니다.

SELECT RLIKE('800-456-7891', $$[2-9]\d{2}-\d{3}-\d{4}$$) AS matches_phone_number;
Copy
+----------------------+
| MATCHES_PHONE_NUMBER |
|----------------------|
| True                 |
+----------------------+
SELECT RLIKE('jsmith@email.com',$$\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$$) AS matches_email_address;
Copy
+-----------------------+
| MATCHES_EMAIL_ADDRESS |
|-----------------------|
| True                  |
+-----------------------+

다음 예에서는 동일한 일치를 수행하지만 작은따옴표로 묶인 문자열 상수 를 사용하여 정규식을 지정합니다.

이 예제에서는 작은따옴표로 묶인 문자열 상수를 사용하므로 각 백슬래시는 또 다른 백슬래시로 이스케이프되어야 합니다.

-- Escape the backslash character (\) in \w and \d

SELECT RLIKE('800-456-7891','[2-9]\\d{2}-\\d{3}-\\d{4}') AS matches_phone_number;
Copy
+----------------------+
| MATCHES_PHONE_NUMBER |
|----------------------|
| True                 |
+----------------------+
SELECT RLIKE('jsmith@email.com','\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}') AS matches_email_address;
Copy
+-----------------------+
| MATCHES_EMAIL_ADDRESS |
|-----------------------|
| True                  |
+-----------------------+

또는 문을 다시 작성하고 백슬래시 문자에 의존하는 시퀀스를 피하십시오.

SELECT RLIKE('800-456-7891','[2-9][0-9]{2}-[0-9]{3}-[0-9]{4}') AS matches_phone_number;
Copy
+----------------------+
| MATCHES_PHONE_NUMBER |
|----------------------|
| True                 |
+----------------------+
SELECT RLIKE('jsmith@email.com','[a-zA-Z_]+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}') AS matches_email_address;
Copy
+-----------------------+
| MATCHES_EMAIL_ADDRESS |
|-----------------------|
| True                  |
+-----------------------+

두 번째 구문

대/소문자를 구분하는 패턴 일치:

SELECT * FROM rlike_ex WHERE city RLIKE 'San.* [fF].*';
Copy
+---------------+
| CITY          |
|---------------|
| San Francisco |
+---------------+

추가 예

정규식의 추가 예는 [ NOT ] REGEXP 섹션을 참조하십시오.