LIKE ALL

LIKE ALL

하나 이상의 지정된 패턴 모두에 대해 문자열을 대소문자 구분 비교하여 일치 여부를 판단해요. WHERE 절에서 이 함수를 사용해 일치 항목을 필터링해요.

출처: Snowflake LIKE ALL 함수 문서

본문

팁: 검색 최적화 서비스(Search Optimization Service)를 사용하면 이 함수를 호출하는 쿼리의 성능을 개선할 수 있어요. 자세한 내용은 검색 최적화 서비스 문서를 참고해요.

참고 항목: [NOT] LIKE

구문 (Syntax)

 LIKE ALL (
[, 
 ... ] ) [ ESCAPE  ]

인자 (Arguments)

필수:

  • subject — 패턴(들)과 비교할 문자열이에요.
  • pattern# — 문자열을 비교할 패턴(들)이에요. 최소한 하나의 패턴을 지정해야 해요.

선택:

  • escape_char — 와일드카드 문자 앞에 삽입하여, 해당 와일드카드를 와일드카드가 아닌 일반 문자로 해석하도록 나타내는 문자(들)이에요.

반환 값 (Returns)

BOOLEAN 값 또는 NULL을 반환해요:

  • 일치하면 TRUE를 반환해요.
  • 일치하지 않으면 FALSE를 반환해요.
  • 어떤 인자가 NULL이면 NULL을 반환해요.

사용 노트 (Usage Notes)

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

  • NULL은 NULL과 일치하지 않아요. 즉, subject가 NULL이고 패턴 중 하나가 NULL이면, 그것은 일치로 간주되지 않아요.

  • subject 앞에 NOT 논리 연산자를 사용하여, 지정된 패턴 중 어느 것과도 일치하지 않으면 TRUE를 반환하는 대소문자 구분 비교를 수행할 수 있어요.

  • pattern에서 SQL 와일드카드가 지원돼요:

    • 밑줄(_)은 임의의 단일 문자와 일치해요.
    • 백분율 기호(%)는 0개 이상의 문자 시퀀스와 일치해요.
  • pattern의 와일드카드는 subject의 줄바꿈 문자(n)도 일치로 포함해요.

  • 패턴이 전체 입력 문자열(subject)과 일치하면 패턴이 일치한 것으로 간주돼요. 문자열 안 어디서든 시퀀스를 일치시키려면 패턴을 %로 시작하고 끝내세요 (예: %something%).

  • 함수를 서브쿼리와 함께 사용하면, 서브쿼리는 단일 행을 반환해야 해요.

    예를 들어 다음은 서브쿼리가 단일 행을 반환할 때만 사용해야 해요:

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

정렬 규칙 세부사항 (Collation Details)

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

예제 (Examples)

일부 문자열을 포함하는 테이블 생성:

CREATE OR REPLACE TABLE like_all_example(name VARCHAR(20));
INSERT INTO like_all_example VALUES
    ('John  Dddoe'),
    ('Joe   Doe'),
    ('John_do%wn'),
    ('Joe down'),
    ('Tom   Doe'),
    ('Tim down'),
    (null);

이 쿼리는 와일드카드(%)가 있는 패턴을 사용해 일치 항목을 찾는 방법을 보여줘요:

SELECT *
  FROM like_all_example
  WHERE name LIKE ALL ('%Jo%oe%','J%e')
  ORDER BY name;
+-------------+
| NAME        |
|-------------|
| Joe   Doe   |
| John  Dddoe |
+-------------+

이 쿼리는 성공적인 결과를 위해 모든 패턴이 일치해야 한다는 것을 보여줘요:

SELECT *
  FROM like_all_example
  WHERE name LIKE ALL ('%Jo%oe%','J%n')
  ORDER BY name;
+------+
| NAME |
|------|
+------+

이 쿼리는 보통 와일드카드인 문자(_와 %)를 리터럴로 취급해야 한다는 것을 나타내기 위해 이스케이프 문자를 사용하는 방법을 보여줘요:

SELECT *
  FROM like_all_example
  WHERE name LIKE ALL ('%J%h%^_do%', 'J%^%wn') ESCAPE '^'
  ORDER BY name;
+------------+
| NAME       |
|------------|
| John_do%wn |
+------------+

더 알아보기