isearch 함수

적용 대상:예 Databricks Runtime 19.0 이상으로 표시된 확인

Important

이 기능은 베타 버전으로 제공됩니다. 작업 영역 관리자는 미리 보기 페이지에서 이 기능에 대한 액세스를 제어할 수 있습니다. Azure Databricks 미리 보기 관리를 참조하세요.

지정된 대상 표현 내의 텍스트에 대해 대소문자 구분 없이 검색합니다.

isearch는 동일한 동작을 가진 함수의 search 대/소문자를 구분하지 않는 변형입니다.

Syntax

isearch ( expr [, ...], search_pattern [, mode => mode] )

Arguments

  • expr: 내면을 탐색할 표정들.
  • search_pattern: 검색할 텍스트를 나타내는 일정 STRING 한 표현식입니다.
  • mode: 선택 사항입니다. 대소문자 구분 STRING 없는 리터럴이 매칭 수행 방식을 제어합니다. 유효한 값은 'substring''word'입니다. 기본값은 'substring'입니다.

Returns

BOOLEAN 검색 패턴이 대문자를 무시하고 어떤 문자열 검색 가능한 대상 표현식과 일치하는지 여부를 나타내는 값입니다.

Notes

모드에서는 substring 검색 패턴이 문자 그대로 매칭됩니다. , , 와 % 같은 문자는 *.정규 표현식이나 와일드카드 문자로서 특별한 의미를 갖지 않습니다.

다음 유형들은 문자열 검색 가능합니다:

Type 문자열 검색 가능
VOID, , STRINGVARIANT 늘.
ARRAY 자식 표현식은 문자열 검색이 가능합니다.
MAP 값 표현식은 문자열 검색이 가능합니다.
STRUCT 적어도 하나의 필드 표현식은 문자열 탐색 가능합니다.

표현식의 경우 STRUCT , 는 isearch 문자열 검색이 불가능한 필드를 무시합니다.

표현식의 경우 VARIANT , isearch 타입 VOID 또는 STRING의 잎 노드만 스캔합니다.

이 표현은 isearch 암묵적으로 비STRING 표현을 표현에 STRING 적용하지 않습니다.

반환 값은 다음과 같이 결정됩니다:

  • NULL 탐색 패턴이 이라면 NULL.
  • true 검색 패턴이 적어도 하나의 문자열 검색 가능한 값과 일치하면, 대소형은 무시합니다.
  • NULL 검색 패턴이 어떤 문자열 검색 가능한 값과 일치하지 않고, 그 중 적어도 하나가 가 된다 NULL면.
  • false 검색 패턴이 문자열 검색 가능한 값과 일치하지 않고, 그 값들 중 어느 것도 가 아닙니다 NULL.

모드에 대해 지원하는 값은 다음과 같습니다:

  • 'substring': 검색 패턴이 목표 값 내 어디에든 나타나면 매칭되며, 케이스는 무시합니다. 이것이 기본 옵션입니다.
  • 'word': 검색 패턴은 UAX#29 단어 경계에서 단어로 나뉩니다. 이 모드는 검색 패턴 내 개별 단어를 순서와 상관없이 일치시킵니다. 각 패턴 단어는 값 앞뒤에 UAX#29 단어 경계가 있을 때 문자열 검색 가능한 값과 일치하며, 대소문자는 무시합니다. 단어가 없는 패턴, 예를 들어 '!!!' 또는 ' '는 를 발생시킨다.SEARCH_INVALID_WORD_PATTERN

테이블 성능은 isearch 미리 구축된 전체 텍스트 검색 인덱스가 있으면 더 큰 도움이 됩니다. 자세한 내용은 Unity 카탈로그가 관리하는 테이블의 전체 텍스트 검색 색인 을 참조하세요.

일반적인 오류 조건

예시

-- Basic examples.

-- Substring mode (default).
> SELECT isearch(column, 'needle', mode => 'substring') FROM VALUES ('Needle') AS table(column);
 true

> SELECT isearch(column, 'quick fox', mode => 'substring') FROM VALUES ('quick brown fox') AS table(column);
 false

> SELECT isearch(column, 'FOO.BAR', mode => 'substring') FROM VALUES ('prefix foo.bar suffix') AS table(column);
 true -- the period is matched literally, and letter case is ignored.

> SELECT isearch(column, 'FOO.BAR', mode => 'substring') FROM VALUES ('prefix fooXbar suffix') AS table(column);
 false -- the period does not match an arbitrary character.

> SELECT isearch(column, '100%', mode => 'substring') FROM VALUES ('100 percent'), ('100%') AS table(column);
 false
 true -- the percent sign is not a wildcard.

> SELECT isearch(column, lower('NEEDLE')) FROM VALUES ('needle') AS table(column);
 true

-- Non-ASCII case-insensitive matching.
> SELECT isearch(column, 'κόσμος', mode => 'substring') FROM VALUES ('ΚΌΣΜΟΣ') AS table(column);
 true

> SELECT isearch(column, 'οσ', mode => 'substring') FROM VALUES ('ΟΣ') AS table(column);
 true -- sigma folding (`σ` and final `ς`).

-- Word mode.
> SELECT isearch(column, 'fox quick', mode => 'word') FROM VALUES ('Quick Brown Fox') AS table(column);
 true

> SELECT isearch(column, 'slow fox', mode => 'word') FROM VALUES ('quick fox') AS table(column);
 false

> SELECT isearch(column, 'FOO*BAR', mode => 'word') FROM VALUES ('bar and foo') AS table(column);
 true -- the asterisk separates the pattern words; it is not a wildcard.

-- Examples on a table with a VARIANT column.
> CREATE TABLE test_table AS
    SELECT parse_json('{
      "role": "user",
      "id": 101,
      "preferences": {"theme": "dark", "language": "en"}
    }') AS column;

> SELECT isearch(column, 'USER', mode => 'substring') FROM test_table;
 true

> SELECT isearch(column, 'PREFERENCES', mode => 'substring') FROM test_table;
 false -- only values are searched.

> SELECT isearch(column, '101', mode => 'substring') FROM test_table;
 false -- no implicit cast to string.

-- NULL behavior.
> SELECT isearch(NULL, 'needle', mode => 'substring');
 NULL

> SELECT isearch(CAST(NULL AS STRING), 'needle', mode => 'substring');
 NULL

> SELECT isearch(CAST(NULL AS INT), 'needle', mode => 'substring');
 false

> SELECT isearch('needle in haystack', NULL, mode => 'substring');
 NULL

-- Search across multiple columns.
> SELECT isearch(column1, column2, '123', mode => 'substring')
    FROM VALUES (123, 'needle in haystack') AS table(column1, column2);
 false -- integer column is skipped, no implicit cast to string.

> SELECT isearch(column1, column2, 'NEEDLE', mode => 'substring')
    FROM VALUES (123, 'needle in haystack') AS table(column1, column2);
 true