Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
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 , указывающее, совпадает ли шаблон поиска с любым целевым выражением, которое можно искать по строкам, игнорируя падеж.
Примечания
В substring режиме шаблон поиска совпадает буквально. Символы, такие как ., *, и % не имеют особого значения как регулярные выражения или джокеры.
Следующие типы доступны для поиска по строкам:
| Type | Можно найти по строкам, когда |
|---|---|
VOID, STRING, VARIANT |
Всегда. |
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 Catalog для подробностей.
Распространенные условия ошибки
- DATATYPE_MISMATCH. UNEXPECTED_INPUT_TYPE
- НЕДОСТАТОЧНО_АРГУМЕНТОВ
- SEARCH_INVALID_WORD_PATTERN
- SEARCH_STAR_ARGUMENT_NOT_ALLOWED
Примеры
-- 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