isearch функция

Область применения:check помечена да 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 для подробностей.

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

Примеры

-- 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