[ NOT ] ILIKE
[ NOT ] ILIKE (대소문자 무시 패턴 매칭)
문자열이 지정된 패턴과 일치하는지 또는 일치하지 않는지 판단하는 대소문자 무시(case-insensitive) 비교를 수행해요. 대소문자를 구분하는 매칭에는 LIKE를 대신 사용하세요.
본문
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 |
+-----------+