isearch 함수

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

Important

이 기능은 베타 버전으로 제공됩니다.

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

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