search Fonction

S’applique à :check marqué oui Databricks Runtime 19.0 et versions ultérieures

Important

Cette fonctionnalité est en version bêta. Les administrateurs d’espace de travail peuvent contrôler l’accès à cette fonctionnalité à partir de la page Aperçus . Consultez Gérer les préversions d’Azure Databricks.

Retourne true si search_pattern elle se trouve dans l’une des valeurs de colonne cible fournies.

Pour plus d’informations sur l’accélération des search requêtes avec des index de recherche en texte intégral, consultez les index de recherche en texte intégral sur les tables gérées par le catalogue Unity.

Syntax

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

Arguments

  • column: Une ou plusieurs expressions cibles pouvant faire l’objet d’une recherche. Une expression pouvant faire l’objet d’une recherche a l’un des types suivants :

    • STRING avec UTF8_BINARY classement.
    • VARIANT.
    • STRUCT avec au moins un champ pouvant faire l’objet d’une recherche. Le struct est automatiquement étendu à ses champs feuilles pouvant faire l’objet d’une recherche à n’importe quelle profondeur d’imbrication.
    • ARRAY de n’importe quel type pouvant faire l’objet d’une recherche.

    Il n’y a pas de cast implicite pour les valeurs cibles autres que des chaînes.

  • search_pattern: expression pliable (constante) STRING avec la valeur à rechercher.

  • mode: argument nommé STRING facultatif qui contrôle la façon dont les correspondances sont effectuées. L'un des:

    • 'substring' (valeur par défaut) : correspond si search_pattern elle apparaît n’importe où dans une valeur cible. Équivalent à contains la fonction.
    • 'word': correspond aux mots individuels par rapport à search_pattern une valeur cible, quel que soit l’ordre.

Returns

Un BOOLEAN.

  • true s’il search_pattern se trouve dans l’une des valeurs de colonne cible.
  • NULL s’il search_pattern n’est trouvé dans aucune valeur de colonne cible et qu’au moins l’une de ces valeurs est NULL.
  • Sinon, false.

Notes

  • isearch la fonction est la variante non sensible à la casse d’un search comportement autrement identique.
  • Pour un argument, la fonction recherche chaque champ feuille pouvant faire l’objet d’une STRUCT recherche à partir du struct de niveau supérieur, quelle que soit la profondeur d’imbrication. La même expansion s’applique de manière récursive aux champs au sein VARIANT et ARRAY aux STRUCT valeurs.
  • En 'substring' mode, VARIANT les clés et les valeurs scalaires non string à l’intérieur d’un ne VARIANT sont pas mises en correspondance. Utilisez le mode ou extrayez 'word' des champs individuels pour les rechercher.

Conditions d’erreur courantes

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]