Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
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 constanteSTRINGuitdrukking die aangeeft naar welke tekst gezocht moet worden. -
mode: optioneel. Een letterlijk woord dat niet op een hoofdletterSTRINGafstemt 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:
-
NULLals het zoekpatroon isNULL. -
trueals het zoekpatroon overeenkomt met ten minste één string-zoekbare waarde. -
NULLals het zoekpatroon niet overeenkomt met een string-zoekbare waarde, en ten minste één van die waarden isNULL. -
falseAls het zoekpatroon niet overeenkomt met een string-zoekbare waarde, en geen van die waarden isNULL.
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' ', verhoogtSEARCH_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
- DATATYPE_MISMATCH. UNEXPECTED_INPUT_TYPE
- NIET_GENOEG_ARGS
- 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