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

Vrátí true hodnotu, pokud search_pattern je nalezena v některé z zadaných hodnot cílového sloupce.

Informace o urychlení search dotazů pomocí fulltextových vyhledávacích indexů najdete v tématu Fulltextové indexy vyhledávání ve spravovaných tabulkách Katalogu Unity.

Syntax

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

Arguments

  • column: Jeden nebo více prohledávatelných cílových výrazů. Prohledávatelný výraz má jeden z těchto typů:

    • STRING UTF8_BINARY s kolací.
    • VARIANT.
    • STRUCT aspoň s jedním prohledávatelným polem. Struktura se automaticky rozšíří na prohledávatelná pole typu list v libovolné hloubkě vnoření.
    • ARRAY libovolného prohledávatelného typu.

    Pro neřetězcové cílové hodnoty neexistuje implicitní přetypování.

  • search_pattern: Skládací (konstantní) STRING výraz s hodnotou, kterou chcete vyhledat.

  • mode: Nepovinný pojmenovaný STRING argument, který určuje, jak se mají shody provádět. Jedna z těchto možností:

    • 'substring' (výchozí): Odpovídá, pokud search_pattern se zobrazí kdekoli v cílové hodnotě. Ekvivalent funkcecontains.
    • 'word': Porovná jednotlivá slova v search_pattern cílové hodnotě bez ohledu na pořadí.

Returns

Nějaké BOOLEAN.

  • true pokud search_pattern se nachází v některé z cílových hodnot sloupce.
  • NULL pokud search_pattern v žádné cílové hodnotě sloupce nebyla nalezena aspoň jedna z těchto hodnot je NULL.
  • false jinak.

Notes

  • isearch funkce je varianta nerozlišující search malá a velká písmena s jinak identickým chováním.
  • STRUCT U argumentu funkce prohledává každé prohledávatelné pole typu list dostupné ze struktury nejvyšší úrovně bez ohledu na hloubku vnoření. Stejné rozšíření se rekurzivně vztahuje na STRUCT pole v rámci VARIANT a ARRAY hodnoty.
  • V 'substring' režimu VARIANT se klíče a skalární hodnoty mimo řetězec v rámci objektu VARIANT neshodují. K jejich vyhledání použijte 'word' režim nebo extrahujte jednotlivá pole.

Běžné chybové podmínky

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]