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