[ NOT ] RLIKE

[ NOT ] RLIKE

문자열이 지정한 패턴과 일치하는지, 또는 일치하지 않는지를 판단하는 비교를 수행해요. 두 입력 모두 텍스트 표현식이어야 해요.

RLIKE는 [NOT] LIKE 함수와 비슷하지만, SQL LIKE 패턴 문법 대신 POSIX 확장 정규식을 사용해요. LIKE보다 더 복잡한 매칭 조건을 지원해요.

출처: Snowflake RLIKE 함수 문서

본문

팁

검색 최적화 서비스(Search Optimization Service)를 사용하면 이 함수를 호출하는 쿼리의 성능을 개선할 수 있어요. 자세한 내용은 검색 최적화 서비스 문서를 참고해요.

별칭(Aliases): [NOT] REGEXP (2번째 문법), REGEXP_LIKE (1번째 문법)

참고 항목: 문자열 함수 (정규식) — REGEXP_COUNT, REGEXP_INSTR, REGEXP_REPLACE, REGEXP_SUBSTR, REGEXP_SUBSTR_ALL / [NOT] ILIKE, [NOT] LIKE

구문 (Syntax)

-- 1st syntax
RLIKE(  , 
 [ , 
 ] )

-- 2nd syntax
 [ NOT ] RLIKE 

인자 (Arguments)

필수:

  • subject — 일치 항목을 검색할 문자열이에요.
  • pattern — 일치시킬 패턴이에요. 패턴 지정 가이드라인은 문자열 함수 (정규식) 문서를 참고해요.

선택:

  • parameters — 일치 검색에 사용할 매개변수를 지정하는 한 개 이상의 문자로 된 문자열이에요. 지원 값:
매개변수 설명
c 대소문자 구분 매칭
i 대소문자 무시 매칭
m 다중 행 모드
e 하위 일치 추출
s 단일 행 모드 — POSIX 와일드카드 문자 .가 \n과도 일치함

기본값: c

자세한 내용은 정규식 매개변수 지정 문서를 참고해요.

반환 값 (Returns)

BOOLEAN 또는 NULL을 반환해요.

  • RLIKE가 지정되면 일치가 있으면 TRUE, 그렇지 않으면 FALSE를 반환해요.
  • NOT RLIKE가 지정되면 일치가 없으면 TRUE, 그렇지 않으면 FALSE를 반환해요.
  • RLIKE 또는 NOT RLIKE가 지정됐을 때 어떤 인자가 NULL이면 NULL을 반환해요.

사용 노트 (Usage Notes)

  • 이 함수는 패턴을 문자열 양쪽 끝에 암시적으로 고정해요 (예: ''는 자동으로 '^$', 'ABC'는 자동으로 '^ABC$'가 됨). 예를 들어 ABC로 시작하는 모든 문자열을 일치시키려면 패턴은 'ABC.*'가 돼요.
  • 역슬래시 문자(\)는 이스케이프 문자예요. 자세한 내용은 단일 따옴표 문자열 상수에서 정규식 지정 문서를 참고해요.
  • 추가 사용 노트는 정규식 함수의 일반 사용 노트를 참고해요.

정렬 규칙 세부사항 (Collation Details)

정렬 규칙이 지정된 인자는 현재 지원되지 않아요.

예제 (Examples)

이 주제의 예제 데이터를 설정하려면 다음 명령을 실행해요:

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

첫 번째 문법 사용 예제

와일드카드로 대소문자 무시 패턴 매칭을 수행하는 예제예요:

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

다음 예제는 문자열이 전화번호 형식인지, 이메일 주소 형식인지를 판단해요. 이 예제들은 정규식 안의 역슬래시 이스케이프를 피하기 위해 달러 따옴표 문자열로 정규식을 지정했어요.

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

다음 예제는 동일한 매칭을 수행하지만 단일 따옴표 문자열 상수를 사용해 정규식을 지정해요. 단일 따옴표 문자열 상수를 사용하므로 각 역슬래시는 다른 역슬래시로 이스케이프해야 해요.

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

또는 문장을 다시 작성해서 역슬래시 문자에 의존하는 시퀀스를 피할 수도 있어요.

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

두 번째 문법 사용 예제

와일드카드로 대소문자 무시 패턴 매칭을 수행하는 예제예요:

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

추가 예제

정규식의 추가 예제는 [NOT] REGEXP 문서를 참고해요.

더 알아보기