Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Funzione
Si applica a:
Databricks Runtime 19.0 e versioni successive
Importante
Questa funzionalità è in versione beta. Gli amministratori dell'area di lavoro possono controllare l'accesso a questa funzionalità dalla pagina Anteprime . Vedere Gestire le anteprime di Azure Databricks.
Effettua una ricerca di testo all'interno delle espressioni target specificate.
searchè la variante sensibile al caso diisearch funzione con comportamento altrimenti identico.
Syntax
search ( expr [, ...], search_pattern [, mode => mode] )
Arguments
-
expr: Le espressioni da cercare all'interno. -
search_pattern: Un'espressione costanteSTRINGche indica il testo da cercare. -
mode: facoltativo. Un letterale insensibileSTRINGalla maiuscola e minuscola che controlla come viene eseguita la corrispondenza. I valori validi sono'substring'e'word'. Il valore predefinito è'substring'.
Returns
Un valore che indica se il pattern di ricerca corrisponde BOOLEAN a qualsiasi espressione target ricercabile tramite stringa.
Notes
In substring modalità la modalità di ricerca è letteralmente corrispondente. I caratteri come ., *, e % non hanno un significato speciale come espressioni regolari o personaggi jolly.
I seguenti tipi sono ricercabili tramite stringhe:
| Tipo | Ricercabile per stringhe quando |
|---|---|
VOID, STRING, VARIANT |
Sempre. |
ARRAY |
La sua espressione figlia è ricercabile tramite stringhe. |
MAP |
La sua espressione di valore è ricercabile tramite stringhe. |
STRUCT |
Almeno una delle sue espressioni di campo è ricercabile tramite stringhe. |
Per le STRUCT espressioni, search ignora i campi che non sono ricercabili tramite stringhe.
Per le VARIANT espressioni, search scansiona solo i nodi foglia che sono di tipo VOID o STRING.
L'espressione search non associa implicitamente non-espressioniSTRING alle STRING espressioni.
Il valore di ritorno è determinato come segue:
-
NULLse il modello di ricerca èNULL. -
truese il pattern di ricerca corrisponde ad almeno un valore ricercabile per stringhe. -
NULLse il pattern di ricerca non corrisponde a nessun valore ricercabile per stringhe, e almeno uno di questi valori èNULL. -
falsese il pattern di ricerca non corrisponde a nessun valore ricercabile per stringhe, e nessuno di quei valori èNULL.
Sono supportati i seguenti valori per la modalità:
-
'substring': Corrisponde se il pattern di ricerca appare da qualche parte all'interno del valore target. Si tratta dell'opzione predefinita. -
'word': Il modello di ricerca è suddiviso in parole ai confini UAX #29 parole. La modalità corrisponde alle singole parole nel pattern di ricerca, indipendentemente dall'ordine. Ogni parola schema corrisponde a un valore ricercabile per stringhe se appare nel valore con i confini della parola UAX#29 immediatamente prima e dopo. Un pattern che non contiene parole, come'!!!'o' ', sollevaSEARCH_INVALID_WORD_PATTERN.
Le search prestazioni presenti possono beneficiare di un indice di ricerca a testo intero predefinito.
Consulta gli indici di ricerca a testo completo sulle tabelle gestite del Catalogo Unity per i dettagli.
Condizioni di errore comuni
- DATATYPE_MISMATCH. UNEXPECTED_INPUT_TYPE
- ARGOMENTI_INSUFFICIENTI
- SEARCH_INVALID_WORD_PATTERN
- SEARCH_STAR_ARGUMENT_NOT_ALLOWED
Examples
-- Basic examples.
-- Substring mode (default).
> 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, 'foo.bar', mode => 'substring') FROM VALUES ('prefix foo.bar suffix') AS table(column);
true -- the period is matched literally.
> SELECT search(column, 'foo.bar', mode => 'substring') FROM VALUES ('prefix fooXbar suffix') AS table(column);
false -- the period does not match an arbitrary character.
> SELECT search(column, '100%', mode => 'substring') FROM VALUES ('100 percent'), ('100%') AS table(column);
false
true -- the percent sign is not a wildcard.
> SELECT search(column, lower('NEEDLE')) FROM VALUES ('needle') AS table(column);
true
-- Word mode.
> SELECT search(column, 'fox quick', mode => 'word') FROM VALUES ('quick brown fox') AS table(column);
true
> SELECT search(column, 'slow fox', mode => 'word') FROM VALUES ('quick fox') AS table(column);
false
> SELECT search(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 search(column, 'user', mode => 'substring') FROM test_table;
true
> SELECT search(column, 'preferences', mode => 'substring') FROM test_table;
false -- only values are searched.
> SELECT search(column, '101', mode => 'substring') FROM test_table;
false -- no implicit cast to string.
-- NULL behavior.
> SELECT search(NULL, 'needle', mode => 'substring');
NULL
> SELECT search(CAST(NULL AS STRING), 'needle', mode => 'substring');
NULL
> SELECT search(CAST(NULL AS INT), 'needle', mode => 'substring');
false
> SELECT search('needle in haystack', NULL, mode => 'substring');
NULL
-- Search across multiple columns.
> SELECT search(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 search(column1, column2, 'needle', mode => 'substring')
FROM VALUES (123, 'needle in haystack') AS table(column1, column2);
true