- 카테고리:
RLIKE¶
지정된 패턴과 주제가 일치하면 true를 반환합니다. 두 입력 모두 텍스트 식이어야 합니다.
RLIKE는 LIKE 함수와 유사하지만, SQL LIKE 패턴 구문 대신 POSIX 확장 정규식을 사용합니다. 이 함수는 LIKE보다 더 복잡한 일치 조건을 지원합니다.
- 별칭
REGEXP (두 번째 구문) , REGEXP_LIKE (첫 번째 구문)
문자열 함수(정규식) 항목도 참조하십시오.
구문¶
-- 1st syntax
RLIKE( <subject> , <pattern> [ , <parameters> ] )
-- 2nd syntax
<subject> RLIKE <pattern>
인자¶
필수:
subject
일치할 주제입니다.
pattern
일치할 패턴입니다.
선택 사항:
parameters
일치 항목을 검색하는 데 사용되는 매개 변수를 지정하는 하나 이상의 문자로 된 문자열입니다. 지원되는 값:
c
,i
,m
,e
,s
자세한 내용은 정규식에 매개 변수 지정하기 섹션을 참조하십시오.
기본값:
c
반환¶
반환된 값의 데이터 타입은 BOOLEAN 입니다.
사용법 노트¶
이 함수는 암시적으로 패턴을 양쪽 끝에 고정합니다(즉,
''
는 자동으로'^$'
가 되고'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 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 | +-----------------------+ -- Alternatively, rewrite the statements and avoid sequences that rely on the backslash character 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 | +---------------+