[ NOT ] ILIKE

[ NOT ] ILIKE (대소문자 무시 패턴 매칭)

문자열이 지정된 패턴과 일치하는지 또는 일치하지 않는지 판단하는 대소문자 무시(case-insensitive) 비교를 수행해요. 대소문자를 구분하는 매칭에는 LIKE를 대신 사용하세요.

출처: Snowflake SQL Reference - [ NOT ] ILIKE

본문

LIKE, ILIKE, RLIKE 모두 비슷한 연산을 수행해요. 하지만 RLIKE는 LIKE와 ILIKE가 사용하는 SQL 패턴 구문 대신 POSIX ERE(확장 정규식) 구문을 사용해요.

TIP: 이 함수를 호출하는 쿼리의 성능을 높이려면 검색 최적화 서비스(Search optimization service)를 사용할 수 있어요. 자세한 내용은 Search optimization service를 참고하세요.

참고: [ NOT ] LIKE, [ NOT ] RLIKE

구문

<subject> [ NOT ] ILIKE <pattern> [ ESCAPE <escape> ]

ILIKE( <subject> , <pattern> [ , <escape> ] )

인자

필수:

subject

매칭할 대상이에요.

pattern

매칭할 패턴이에요.

선택:

escape

와일드카드 문자 앞에 삽입되는 문자로, 와일드카드가 와일드카드로 해석되지 않고 일반 문자로 해석되어야 함을 나타내요.

반환 값

BOOLEAN 또는 NULL을 반환해요.

  • ILIKE가 지정되면 매치가 있으면 TRUE, 그 외에는 FALSE를 반환해요.

  • NOT ILIKE가 지정되면 매치가 없으면 TRUE, 그 외에는 FALSE를 반환해요.

  • ILIKE든 NOT ILIKE든 어떤 인자라도 NULL이면 NULL을 반환해요.

사용 시 참고 사항

  • 패턴 매칭에 작은따옴표나 다른 특수 문자를 포함하려면 백슬래시 이스케이프 시퀀스를 사용할 수 있어요.

  • NULL은 NULL과 매치되지 않아요. 즉, subject가 NULL이고 pattern이 NULL이면 그것은 매치로 간주되지 않아요.

  • SQL 와일드카드는 pattern에서 지원돼요.

    • 밑줄(_)은 어떤 단일 문자와도 일치해요.

    • 백분율 기호(%)는 0개 이상의 문자의 어떤 시퀀스와도 일치해요.

  • pattern의 와일드카드는 subject의 개행 문자(n)를 매치로 포함해요.

  • 패턴 매칭은 전체 문자열을 대상으로 해요. 문자열 내 임의의 위치에서 시퀀스를 매치하려면 패턴을 %로 시작하고 끝내세요.

  • 기본 이스케이프 문자는 없어요.

  • 이스케이프 문자로 백슬래시를 사용하면, 표현식과 ESCAPE 절 둘 다에서 백슬래시를 이스케이프해야 해요. 예를 들어 다음 명령은 이스케이프 문자가 백슬래시임을 지정하고, 그 이스케이프 문자를 사용해 %를 리터럴로 검색해요(이스케이프 문자가 없으면 %는 와일드카드로 처리돼요):

    'SOMETHING%' ILIKE '%\\\\%%' ESCAPE '\\';
    

    이스케이프 문자 사용 예시는 ILIKE의 예시를 참고하세요. 이스케이프 문자, 특히 백슬래시를 이스케이프 문자로 사용하는 더 많은 예시는 LIKE의 예시를 참고하세요.

  • 이 함수가 지원하는 것보다 더 복잡한 패턴 매칭이 필요하면 정규식 함수를 대신 사용할 수 있어요.

정렬 규칙(collation) 세부 사항

upper, lower, trim 정렬 규칙 지정만 지원돼요. upper, lower, trim과의 조합(예: upper-trim, lower-trim)도 로케일 조합(예: en-upper)을 제외하고 지원돼요.

예시

몇 개의 문자열을 담은 테이블을 만들어요.

CREATE OR REPLACE TABLE ilike_ex(name VARCHAR(20));
INSERT INTO ilike_ex VALUES
 ('John Dddoe'),
 ('Joe Doe'),
 ('John_down'),
 ('Joe down'),
 (null);

다음 예시들은 ILIKE, NOT ILIKE, 와일드카드 문자 %의 사용을 보여줘요.

SELECT *
 FROM ilike_ex
 WHERE name ILIKE '%j%h%do%'
 ORDER BY 1;
+-------------+
| NAME        |
|-------------|
| John Dddoe  |
| John_down   |
+-------------+
SELECT *
 FROM ilike_ex
 WHERE name NOT ILIKE '%j%h%do%'
 ORDER BY 1;
+-----------+
| NAME      |
|-----------|
| Joe Doe   |
| Joe down  |
+-----------+
SELECT *
 FROM ilike_ex
 WHERE name ILIKE '%j%h%^_do%' ESCAPE '^'
 ORDER BY 1;
+-----------+
| NAME      |
|-----------|
| John_down |
+-----------+

더 알아보기