- 카테고리:
[ 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>
인자¶
필수:
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);
첫 번째 구문¶
다음 예에서는 와일드카드를 사용하여 대/소문자를 구분하지 않는 패턴 일치를 수행합니다.
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('jsmith@email.com',$$\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$$) AS matches_email_address;+-----------------------+ | 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;+----------------------+ | MATCHES_PHONE_NUMBER | |----------------------| | True | +----------------------+SELECT RLIKE('jsmith@email.com','\\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('jsmith@email.com','[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 섹션을 참조하십시오.