Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
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 :-
STRINGavecUTF8_BINARYclassement. -
VARIANT. -
STRUCTavec 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. -
ARRAYde 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)STRINGavec la valeur à rechercher.mode: argument nomméSTRINGfacultatif qui contrôle la façon dont les correspondances sont effectuées. L'un des:-
'substring'(valeur par défaut) : correspond sisearch_patternelle apparaît n’importe où dans une valeur cible. Équivalent àcontainsla fonction. -
'word': correspond aux mots individuels par rapport àsearch_patternune valeur cible, quel que soit l’ordre.
-
Returns
Un BOOLEAN.
-
trues’ilsearch_patternse trouve dans l’une des valeurs de colonne cible. -
NULLs’ilsearch_patternn’est trouvé dans aucune valeur de colonne cible et qu’au moins l’une de ces valeurs estNULL. - Sinon,
false.
Notes
-
isearchla fonction est la variante non sensible à la casse d’unsearchcomportement autrement identique. - Pour un argument, la fonction recherche chaque champ feuille pouvant faire l’objet d’une
STRUCTrecherche à 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 seinVARIANTetARRAYauxSTRUCTvaleurs. - En
'substring'mode,VARIANTles clés et les valeurs scalaires non string à l’intérieur d’un neVARIANTsont 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]