- 카테고리:
문자열 및 이진 함수 (일치/비교)
LIKE¶
패턴과의 비교를 기반으로 하여 문자열에 대한 대/소문자 구분 일치를 허용합니다. 대/소문자를 구분하지 않는 일치의 경우, 대신 ILIKE를 사용하십시오.
주제 문자열이 패턴과 일치하는 경우, 이는 주제 문자열을 반환합니다.
LIKE, ILIKE, RLIKE 모두는 유사한 작업을 수행합니다. 그러나 RLIKE는 LIKE 및 ILIKE에서 사용하는 SQL 패턴 구문 대신 POSIX EXE(Extended Regular Expression) 구문을 사용합니다.
팁
검색 최적화 서비스를 사용하여 이 함수를 호출하는 쿼리의 성능을 향상할 수 있습니다. 자세한 내용은 검색 최적화 서비스 사용하기 섹션을 참조하십시오.
구문¶
<subject> LIKE <pattern> [ ESCAPE <escape> ]
LIKE( <subject> , <pattern> [ , <escape> ] )
인자¶
필수:
subject
일치할 주제입니다. 이는 몇몇 다른 데이터 타입을 사용할 수 있지만, 일반적으로 VARCHAR입니다.
pattern
일치할 패턴입니다. 이는 몇몇 다른 데이터 타입을 사용할 수 있지만, 일반적으로 VARCHAR입니다.
선택 사항:
escape
와일드카드가 와일드카드로서가 아니라 일반 문자로 해석되어야 함을 나타내기 위해 와일드카드 문자 앞에 삽입된 문자입니다.
반환¶
반환된 값의 데이터 타입은 subject
의 데이터 타입과 동일합니다.
사용법 노트¶
SQL 와일드카드는
pattern
에서 지원됩니다.밑줄(
_
)은 단일 문자와 일치합니다.퍼센트 기호(
%
)는 0개 이상의 문자 시퀀스와 일치합니다.
pattern
의 와일드카드는subject
에 줄 바꿈 문자(\n
)를 일치 항목으로서 포함합니다.LIKE 패턴 일치는 전체 문자열을 포함합니다. 문자열 내의 임의의 위치에서 시퀀스를 일치시키려면 패턴을
%
로 시작하고 끝내십시오.NULL은 NULL과 일치하지 않습니다. 즉, 주제가 NULL이고 패턴이 NULL이면 이는 일치 항목으로 간주되지 않습니다.
기본 이스케이프 문자가 없습니다.
백슬래시를 이스케이프 문자로 사용하는 경우, ESCAPE 절에 백슬래시 이스케이프를 지정해야 합니다. 예를 들어, 다음 명령은 이스케이프 문자가 백슬래시임을 지정한 다음, 해당 이스케이프 문자를 사용하여 〈%〉를 리터럴로 검색합니다(이스케이프 문자가 없으면 〈%〉는 와일드카드로 처리됨).
'SOMETHING%' LIKE '%\\%%' ESCAPE '\\';
이스케이프 문자, 특히 백슬래시를 이스케이프 문자로 사용하는 예는 예 를 참조하십시오.
데이터 정렬 세부 정보¶
Arguments with collation specifications are currently not supported.
예¶
다음 예는 LIKE
, NOT LIKE
, 와일드카드 문자 %
의 사용법을 보여줍니다.
CREATE OR REPLACE TABLE like_ex(subject varchar(20)); INSERT INTO like_ex VALUES ('John Dddoe'), ('Joe Doe'), ('John_down'), ('Joe down'), ('Elaine'), (''), -- empty string (null);SELECT subject FROM like_ex WHERE subject LIKE '%Jo%oe%' ORDER BY subject; +-------------+ | SUBJECT | |-------------| | Joe Doe | | John Dddoe | +-------------+SELECT subject FROM like_ex WHERE subject LIKE '%J%h%^_do%' ESCAPE '^' ORDER BY subject; +-----------+ | SUBJECT | |-----------| | John_down | +-----------+SELECT subject FROM like_ex WHERE subject NOT LIKE 'John%' ORDER BY subject; +-----------+ | SUBJECT | |-----------| | | | Elaine | | Joe Doe | | Joe down | +-----------+SELECT subject FROM like_ex WHERE subject NOT LIKE '' ORDER BY subject; +-------------+ | SUBJECT | |-------------| | Elaine | | Joe Doe | | Joe down | | John Dddoe | | John_down | +-------------+
다음 예에서는 ESCAPE 절을 사용합니다.
INSERT INTO like_ex (subject) VALUES ('100 times'), ('1000 times'), ('100%');이스케이프 문자가 없으면 퍼센트 기호(〈%〉)가 와일드카드로 처리됩니다.
SELECT * FROM like_ex WHERE subject LIKE '100%' ORDER BY 1; +------------+ | SUBJECT | |------------| | 100 times | | 100% | | 1000 times | +------------+이스케이프 문자가 있으면 퍼센트 기호(〈%〉)가 리터럴로 처리됩니다.
SELECT * FROM like_ex WHERE subject LIKE '100^%' ESCAPE '^' ORDER BY 1; +---------+ | SUBJECT | |---------| | 100% | +---------+
다음 예에서는 백슬래시가 이스케이프 문자인 ESCAPE 절을 사용합니다. 백슬래시 자체는 ESCAPE 절 및 식 모두에서 이스케이프되어야 합니다.
SELECT * FROM like_ex WHERE subject LIKE '100\\%' ESCAPE '\\' ORDER BY 1; +---------+ | SUBJECT | |---------| | 100% | +---------+