Funzione search

Si applica a:check contrassegnato con sì 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 costante STRING che indica il testo da cercare.
  • mode: facoltativo. Un letterale insensibile STRING alla 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:

  • NULL se il modello di ricerca è NULL.
  • true se il pattern di ricerca corrisponde ad almeno un valore ricercabile per stringhe.
  • NULL se il pattern di ricerca non corrisponde a nessun valore ricercabile per stringhe, e almeno uno di questi valori è NULL.
  • false se 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 ' ', solleva SEARCH_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

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