Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
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]