isearch Funkce

Platí pro:check označený ano Databricks Runtime 19.0 a novější

Důležité

Tato funkce je v beta verzi. Správci pracovního prostoru můžou řídit přístup k této funkci ze stránky Previews . Viz Manage Azure Databricks preview.

Provádí vyhledávání bez rozlišování textu v rámci specifikovaných cílových výrazů.

isearchnerozlišuje malá a velká písmena funkcesearch s jinak identickým chováním.

Syntax

isearch ( expr [, ...], search_pattern [, mode => mode] )

Arguments

  • expr: Výrazy, které je třeba hledat uvnitř.
  • search_pattern: Konstantní STRING výraz označující text, který má hledat.
  • mode: Volitelné. Literál bez rozlišení STRING písmen, který řídí, jak se párování provádí. Platné hodnoty jsou 'substring' a 'word'. Výchozí hodnota je 'substring'.

Returns

Hodnota BOOLEAN , která indikuje, zda vyhledávací vzor odpovídá nějakému vyhledávatelnému cílovému výrazu, přičemž se ignoruje případ.

Poznámky

V substring režimu je vzor vyhledávání doslova přiřazen. Znaky .jako , *, a nemají % zvláštní význam jako regulární výrazy nebo zástupné znaky.

Následující typy jsou prohledávatelné pomocí řetězců:

Typ Vyhledávání v řetězci, když
VOID, STRING, VARIANT Vždy.
ARRAY Jeho dětský výraz je prohledávatelný pomocí řetězců.
MAP Jeho hodnotový výraz je prohledávatelný pomocí řetězců.
STRUCT Alespoň jeden z jeho výrazů pole je prohledávatelný pomocí řetězců.

Pro STRUCT výrazy ignoruje pole, isearch která nejsou prohledávatelná řetězcem.

Pro VARIANT výrazy skenuje pouze jejich listové uzly, isearch které jsou typu VOID nebo STRING.

Tento isearch výraz implicitně nepřeřazuje ne-výrazySTRING do STRING výrazů.

Návratová hodnota se určuje následovně:

  • NULLpokud je vzor vyhledávání .NULL
  • true pokud vyhledávací vzor odpovídá alespoň jedné hodnotě vyhledávatelné řetězcem, přičemž se ignoruje případ.
  • NULLpokud vyhledávací vzor neodpovídá žádné hodnotě vyhledávatelné řetězcem, a alespoň jedna z těchto hodnot je .NULL
  • false pokud vyhledávací vzor neodpovídá žádné hodnotě vyhledávatelné řetězcem a žádná z těchto hodnot není NULL.

Pro tento režim jsou podporovány následující hodnoty:

  • 'substring': Odpovídá, pokud se vzor vyhledávání objeví kdekoli v cílové hodnotě, přičemž se ignoruje případ. Toto je výchozí možnost.
  • 'word': Vyhledávací vzor je rozdělen na slova na hranicích UAX#29 . Režim porovnává jednotlivá slova ve vyhledávacím vzoru bez ohledu na jejich pořadí. Každé vzorové slovo odpovídá hodnotě vyhledávatelné řetězce, pokud se objeví v hodnotě s hranicemi slov UAX#29 těsně před a za ním, přičemž se ignoruje pád. Vzor, který neobsahuje žádná slova, jako '!!!' nebo ' ', vyvolává SEARCH_INVALID_WORD_PATTERN.

Výkon isearch tabulky může těžit z předpřipraveného indexu plnotextového vyhledávání. Podrobnosti viz Full-text search indexes on Unity Catalog managed tables .

Běžné chybové podmínky

Examples

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