search функция

Область применения:check помечена да Databricks Runtime 19.0 и более поздней версии

Это важно

Эта функция доступна в бета-версии. Администраторы рабочей области могут управлять доступом к этой функции на странице "Предварительные версии ". См. статью "Управление предварительными версиями Azure Databricks".

Возвращается true , если search_pattern он найден в любом из указанных значений целевого столбца.

Сведения об ускорении search запросов с помощью индексов полнотекстового поиска см. в индексах полнотекстового поиска в управляемых таблицах каталога Unity.

Syntax

search ( column [, ...], search_pattern [, mode => mode] )

Arguments

  • column: одно или несколько доступных для поиска целевых выражений. Выражение с возможностью поиска имеет один из следующих типов:

    • STRING с UTF8_BINARY параметрами сортировки.
    • VARIANT.
    • STRUCT с по крайней мере одним полем для поиска. Структуру автоматически развертывают на полях, доступных для поиска, на любой глубине вложения.
    • ARRAY любого искомого типа.

    Неявное приведение для нестроковых целевых значений.

  • search_pattern: свертываемое (константное) STRING выражение со значением для поиска.

  • mode: необязательный именованный STRING аргумент, который управляет выполнением совпадений. Одно из:

    • 'substring' (по умолчанию): соответствует, если search_pattern отображается в любом месте в целевом значении. contains Эквивалент функции.
    • 'word': соответствует отдельным словам в search_pattern значении целевого значения независимо от порядка.

Returns

А BOOLEAN.

  • Значение , если оно найдено в любом из значений целевого столбца.
  • Значение , если значение целевого столбца не найдено, а хотя бы одно из этих значений не найдено.
  • В противном случае false.

Notes

  • isearch функция — это нечувствительный вариант регистра search с одинаковым поведением.
  • STRUCT Для аргумента функция выполняет поиск всех доступных для поиска конечных полей из структуры верхнего уровня независимо от глубины вложения. То же расширение применяется рекурсивно к STRUCT полям внутри VARIANT и ARRAY значениям.
  • В 'substring' режиме VARIANT ключи и нестроковые скалярные значения внутри VARIANT не соответствуют. Используйте 'word' режим или извлеките отдельные поля для поиска по этим полям.

Распространенные условия ошибки

Examples

-- Basic examples.
> SELECT search(column, 'needle', mode => 'substring') FROM VALUES ('Needle') AS table(column);
 false

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

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

> SELECT search(column, 'quick fox', mode => 'word') FROM VALUES ('quick brown fox') AS table(column);
 true

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

-- Automatic expansion of STRUCT columns to their searchable leaf fields.
> CREATE TABLE test_table (
    usage_stats STRUCT<digits: INT>,
    customer_info STRUCT<
      contact: STRUCT<json_field: VARIANT>,
      name: STRING>)
  USING DELTA;

> SELECT * FROM test_table WHERE search(usage_stats.digits, 'needle');
 [DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE]

> SELECT * FROM test_table WHERE search(customer_info, 'needle');
-- Equivalent to:
> SELECT * FROM test_table
  WHERE search(customer_info.contact.json_field, customer_info.name, 'needle');

> SELECT * FROM test_table WHERE search(customer_info.contact, 'needle');
-- Equivalent to:
> SELECT * FROM test_table
  WHERE search(customer_info.contact.json_field, 'needle');

-- VARIANT behavior: substring mode does not match keys or non-string scalar values.
> CREATE TABLE test_table AS
  SELECT parse_json('{
    "role": "user",
    "id": 101,
    "preferences": {"theme": "dark", "language": "en"}
  }') AS column;

> SELECT search(column, 'user', mode => 'substring') FROM test_table;
 true

> SELECT search(column, 'preferences', mode => 'substring') FROM test_table;
 false

> SELECT search(column, '101', mode => 'substring') FROM test_table;
 false

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

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

> SELECT search('needle in haystack', NULL, mode => 'substring');
 [SEARCH_REQUIRES_STRING_LITERALS_ARGUMENTS]