카테고리:

문자열 및 이진 함수 (일치/비교)

[ NOT ] LIKE

문자열이 지정된 패턴과 일치하는지 여부를 확인하기 위해 대/소문자를 구분하는 비교를 수행합니다. 대/소문자를 구분하지 않는 일치의 경우, 대신 ILIKE를 사용하십시오.

LIKE, ILIKE 및 RLIKE는 모두 유사한 작업을 수행합니다. 그러나 RLIKE는 LIKE 및 ILIKE에서 사용하는 SQL 패턴 구문 대신 POSIX ERE(Extended Regular Expression) 구문을 사용합니다.

검색 최적화 서비스를 사용하여 이 함수를 호출하는 쿼리의 성능을 향상할 수 있습니다. 자세한 내용은 검색 최적화 서비스 섹션을 참조하십시오.

참고 항목:

[ NOT ] ILIKE , [ NOT ] RLIKE , LIKE ALL, LIKE ANY

구문

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

LIKE( <subject> , <pattern> [ , <escape> ] )
Copy

인자

필수:

subject

일치할 주제입니다. 이는 몇몇 다른 데이터 타입을 사용할 수 있지만, 일반적으로 VARCHAR입니다.

pattern

일치할 패턴입니다. 이는 몇몇 다른 데이터 타입을 사용할 수 있지만, 일반적으로 VARCHAR입니다.

선택 사항:

escape

와일드카드가 와일드카드로서가 아니라 일반 문자로 해석되어야 함을 나타내기 위해 와일드카드 문자 앞에 삽입된 문자입니다.

반환

BOOLEAN 또는 NULL을 반환합니다.

  • LIKE가 지정된 경우 일치하는 항목이 있으면 값은 TRUE입니다. 그렇지 않으면 FALSE를 반환합니다.

  • NOT LIKE가 지정된 경우 일치하는 항목이 없으면 값은 TRUE입니다. 그렇지 않으면 FALSE를 반환합니다.

  • LIKE 또는 NOT LIKE가 지정된 경우 인자가 NULL이면 NULL을 반환합니다.

사용법 노트

  • 패턴 일치에 작은따옴표 또는 기타 특수 문자를 포함하려면 백슬래시 이스케이프 시퀀스 를 사용할 수 있습니다.

  • NULL은 NULL과 일치하지 않습니다. 즉, 주제가 NULL이고 패턴이 NULL이면 이는 일치 항목으로 간주되지 않습니다.

  • SQL 와일드카드는 pattern 에서 지원됩니다.

    • 밑줄(_)은 단일 문자와 일치합니다.

    • 퍼센트 기호(%)는 0개 이상의 문자 시퀀스와 일치합니다.

  • pattern 의 와일드카드는 subject 에 줄 바꿈 문자(n)를 일치 항목으로서 포함합니다.

  • 패턴 일치는 전체 문자열을 포함합니다. 문자열 내의 임의의 위치에서 시퀀스를 일치시키려면 패턴을 % 로 시작하고 끝내십시오.

  • 기본 이스케이프 문자가 없습니다.

  • 백슬래시를 이스케이프 문자로 사용하는 경우 식과 ESCAPE 절 모두에서 백슬래시를 이스케이프해야 합니다. 예를 들어, 다음 명령은 이스케이프 문자가 백슬래시임을 지정한 다음, 해당 이스케이프 문자를 사용하여 % 를 리터럴로 검색합니다(이스케이프 문자가 없으면 % 는 와일드카드로 처리됨).

    'SOMETHING%' LIKE '%\\%%' ESCAPE '\\';
    
    Copy

    이스케이프 문자, 특히 백슬래시를 이스케이프 문자로 사용하는 예는 를 참조하십시오.

데이터 정렬 세부 정보

upper, lowertrim 데이터 정렬 사양만 지원됩니다. 로캘 조합(예: en-upper)을 제외하고 upper, lowertrim 과의 조합도 지원됩니다(예: upper-trimlower-trim).

일부 문자열이 포함된 테이블을 만듭니다.

CREATE OR REPLACE TABLE like_ex(name VARCHAR(20));
INSERT INTO like_ex VALUES
  ('John  Dddoe'),
  ('John \'alias\' Doe'),
  ('Joe   Doe'),
  ('John_down'),
  ('Joe down'),
  ('Elaine'),
  (''),    -- empty string
  (null);
Copy

다음 예는 LIKE, NOT LIKE, 와일드카드 문자 % 의 사용법을 보여줍니다.

SELECT name
  FROM like_ex
  WHERE name LIKE '%Jo%oe%'
  ORDER BY name;
Copy
+------------------+
| NAME             |
|------------------|
| Joe   Doe        |
| John  Dddoe      |
| John 'alias' Doe |
+------------------+
SELECT name
  FROM like_ex
  WHERE name NOT LIKE '%Jo%oe%'
  ORDER BY name;
Copy
+-----------+
| NAME      |
|-----------|
|           |
| Elaine    |
| Joe down  |
| John_down |
+-----------+
SELECT name
  FROM like_ex
  WHERE name NOT LIKE 'John%'
  ORDER BY name;
Copy
+-----------+                                                                   
| NAME      |
|-----------|
|           |
| Elaine    |
| Joe   Doe |
| Joe down  |
+-----------+
SELECT name
  FROM like_ex
  WHERE name NOT LIKE ''
  ORDER BY name;
Copy
+------------------+
| NAME             |
|------------------|
| Elaine           |
| Joe   Doe        |
| Joe down         |
| John  Dddoe      |
| John 'alias' Doe |
| John_down        |
+------------------+

다음 예제에서는 작은따옴표를 이스케이프하여 패턴 매칭에서 찾을 수 있도록 백슬래시를 사용합니다.

SELECT name
  FROM like_ex
  WHERE name LIKE '%\'%'
  ORDER BY name;
Copy
+------------------+
| NAME             |
|------------------|
| John 'alias' Doe |
+------------------+

다음 예제에서는 ESCAPE 절을 사용합니다.

SELECT name
  FROM like_ex
  WHERE name LIKE '%J%h%^_do%' ESCAPE '^'
  ORDER BY name;
Copy
+-----------+                                                                   
| NAME      |
|-----------|
| John_down |
+-----------+

like_ex 테이블에 추가적인 행을 삽입합니다.

INSERT INTO like_ex (name) VALUES 
  ('100 times'),
  ('1000 times'),
  ('100%');
Copy

이스케이프 문자가 없으면 퍼센트 기호(%)가 와일드카드로 처리됩니다.

SELECT * FROM like_ex WHERE name LIKE '100%'
  ORDER BY 1;
Copy
+------------+                                                                  
| NAME       |
|------------|
| 100 times  |
| 100%       |
| 1000 times |
+------------+

이스케이프 문자가 있으면 퍼센트 기호(%)가 리터럴로 처리됩니다.

SELECT * FROM like_ex WHERE name LIKE '100^%' ESCAPE '^'
  ORDER BY 1;
Copy
+------+                                                                        
| NAME |
|------|
| 100% |
+------+

다음 예에서는 백슬래시가 이스케이프 문자인 ESCAPE 절을 사용합니다. 백슬래시 자체는 ESCAPE 절 및 식 모두에서 이스케이프되어야 합니다.

SELECT * FROM like_ex WHERE name LIKE '100\\%' ESCAPE '\\'
  ORDER BY 1;
Copy
+------+                                                                        
| NAME |
|------|
| 100% |
+------+