[ NOT ] RLIKE
[ NOT ] RLIKE
문자열이 지정한 패턴과 일치하는지, 또는 일치하지 않는지를 판단하는 비교를 수행해요. 두 입력 모두 텍스트 표현식이어야 해요.
RLIKE는 [NOT] LIKE 함수와 비슷하지만, SQL LIKE 패턴 문법 대신 POSIX 확장 정규식을 사용해요. LIKE보다 더 복잡한 매칭 조건을 지원해요.
본문
팁
검색 최적화 서비스(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 문서를 참고해요.
더 알아보기
- Snowflake 문자열 함수 (정규식) — 관련 정규식 함수의 전체 목록