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.

Voert een zoekopdracht uit naar tekst binnen gespecificeerde doelexpressies.

search is de naamvalgevoelige variant van isearch functie met verder identiek gedrag.

Syntax

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

Arguments

  • expr: De uitdrukkingen om in te zoeken.
  • search_pattern: Een constante STRING uitdrukking die aangeeft naar welke tekst gezocht moet worden.
  • mode: optioneel. Een letterlijk woord dat niet op een hoofdletter STRING afstemt en bepaalt hoe het matchen wordt uitgevoerd. Geldige waarden zijn 'substring' en 'word'. De standaardwaarde is 'substring'.

Returns

Een BOOLEAN waarde die aangeeft of het zoekpatroon overeenkomt met een string-zoekbare doelexpressie.

Aantekeningen

In substring modus wordt het zoekpatroon letterlijk gematcht. Tekens zoals ., *, en % hebben geen speciale betekenis als reguliere expressie of jokerkarakters.

De volgende typen zijn string-zoekbaar:

Type String-doorzoekbaar wanneer
VOID, STRING, VARIANT Altijd.
ARRAY De kinduitdrukking is string-zoekbaar.
MAP De waarde-expressie is string-zoekbaar.
STRUCT Ten minste één van de veldexpressies is string-doorzoekbaar.

Voor STRUCT expressies negeert velden search die niet string-zoekbaar zijn.

Voor VARIANT expressies search scant alleen hun bladknopen die van type VOID of STRINGzijn.

De search uitdrukking werpt niet impliciet niet-uitdrukkingenSTRING op STRING uitdrukkingen.

De rendementswaarde wordt als volgt bepaald:

  • NULL als het zoekpatroon is NULL.
  • true als het zoekpatroon overeenkomt met ten minste één string-zoekbare waarde.
  • NULL als het zoekpatroon niet overeenkomt met een string-zoekbare waarde, en ten minste één van die waarden is NULL.
  • false Als het zoekpatroon niet overeenkomt met een string-zoekbare waarde, en geen van die waarden is NULL.

De volgende waarden worden ondersteund voor de modus:

  • 'substring': Komt overeen als het zoekpatroon ergens binnen de doelwaarde voorkomt. Dit is de standaardoptie.
  • 'word': Het zoekpatroon is opgesplitst in woorden bij UAX#29 woordgrenzen. De modus komt overeen met de individuele woorden in het zoekpatroon, ongeacht hun volgorde. Elk patroonwoord komt overeen met een string-zoekbare waarde als het direct voor en na de waarde met UAX#29-woordgrenzen voorkomt. Een patroon dat geen woorden bevat, zoals '!!!' of ' ', verhoogt SEARCH_INVALID_WORD_PATTERN.

De search prestaties op de tafel kunnen profiteren van een vooraf gebouwde full-text zoekindex. Zie de volledige tekstzoekindexen op door de Unity Catalog beheerde tabellen voor details.

Algemene foutvoorwaarden

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