search functie

Van toepassing op:controleren gemarkeerd als Ja Databricks Runtime 19.0 en hoger

Important

Deze functie bevindt zich in de bètaversie. Werkruimtebeheerders kunnen de toegang tot deze functie beheren vanaf de pagina Previews . Zie Azure Databricks previews beheren.

Retourneert true als search_pattern deze wordt gevonden in een van de opgegeven doelkolomwaarden.

Zie zoekindexen voor volledige tekst in beheerde tabellen in Unity Catalog voor informatie over het versnellen search van query's met zoekindexen in volledige tekst.

Syntax

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

Arguments

  • column: een of meer doorzoekbare doelexpressies. Een doorzoekbare expressie heeft een van de volgende typen:

    • STRING met UTF8_BINARY sortering.
    • VARIANT.
    • STRUCT met ten minste één doorzoekbaar veld. De struct wordt automatisch uitgebreid naar doorzoekbare bladvelden op elke nestdiepte.
    • ARRAY van elk doorzoekbaar type.

    Er is geen impliciete cast voor niet-tekenreeksdoelwaarden.

  • search_pattern: Een vouwbare (constante) STRING expressie met de waarde die moet worden gezocht.

  • mode: Een optioneel benoemd STRING argument dat bepaalt hoe overeenkomsten worden uitgevoerd. Een van de volgende:

    • 'substring' (standaard): Komt overeen als search_pattern deze ergens binnen een doelwaarde wordt weergegeven. Gelijk aan contains functie.
    • 'word': Komt overeen met de afzonderlijke woorden search_pattern ten opzichte van een doelwaarde, ongeacht de volgorde.

Returns

A BOOLEAN.

  • true als search_pattern deze wordt gevonden in een van de doelkolomwaarden.
  • NULL als search_pattern deze niet worden gevonden in een doelkolomwaarde en ten minste één van deze waarden is NULL.
  • false anders.

Aantekeningen

  • isearch functie is de hoofdlettergevoelige variant van search met anderszins identiek gedrag.
  • Voor een STRUCT argument doorzoekt de functie elk doorzoekbaar bladveld dat bereikbaar is vanuit de struct op het hoogste niveau, ongeacht de nestdiepte. Dezelfde uitbreiding is recursief van toepassing op STRUCT velden binnen VARIANT en ARRAY waarden.
  • In 'substring' de modus komen VARIANT sleutels en niet-tekenreeks scalaire waarden binnen een VARIANT niet overeen. Gebruik 'word' de modus of extraheer afzonderlijke velden om deze te doorzoeken.

Algemene foutvoorwaarden

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]