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 hoofdletter-ongevoelige zoekopdracht uit naar tekst binnen gespecificeerde doelexpressies.
isearch is de hoofdlettergevoelige variant van search de functie met anderszins identiek gedrag.
Syntax
isearch ( 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 doeluitdrukking, waarbij casus wordt genegeerd.
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 isearch die niet string-zoekbaar zijn.
Voor VARIANT expressies isearch scant alleen hun bladknopen die van type VOID of STRINGzijn.
De isearch 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, waarbij het geval wordt genegeerd. -
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, waarbij geval wordt genegeerd. 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-doorzoekbare waarde als het direct voor en na de waarde met UAX#29-woordgrenzen voorkomt, waarbij de naamval wordt genegeerd. Een patroon dat geen woorden bevat, zoals'!!!'of' ', verhoogtSEARCH_INVALID_WORD_PATTERN.
De isearch 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 isearch(column, 'needle', mode => 'substring') FROM VALUES ('Needle') AS table(column);
true
> SELECT isearch(column, 'quick fox', mode => 'substring') FROM VALUES ('quick brown fox') AS table(column);
false
> SELECT isearch(column, 'FOO.BAR', mode => 'substring') FROM VALUES ('prefix foo.bar suffix') AS table(column);
true -- the period is matched literally, and letter case is ignored.
> SELECT isearch(column, 'FOO.BAR', mode => 'substring') FROM VALUES ('prefix fooXbar suffix') AS table(column);
false -- the period does not match an arbitrary character.
> SELECT isearch(column, '100%', mode => 'substring') FROM VALUES ('100 percent'), ('100%') AS table(column);
false
true -- the percent sign is not a wildcard.
> SELECT isearch(column, lower('NEEDLE')) FROM VALUES ('needle') AS table(column);
true
-- Non-ASCII case-insensitive matching.
> SELECT isearch(column, 'κόσμος', mode => 'substring') FROM VALUES ('ΚΌΣΜΟΣ') AS table(column);
true
> SELECT isearch(column, 'οσ', mode => 'substring') FROM VALUES ('ΟΣ') AS table(column);
true -- sigma folding (`σ` and final `ς`).
-- Word mode.
> SELECT isearch(column, 'fox quick', mode => 'word') FROM VALUES ('Quick Brown Fox') AS table(column);
true
> SELECT isearch(column, 'slow fox', mode => 'word') FROM VALUES ('quick fox') AS table(column);
false
> SELECT isearch(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 isearch(column, 'USER', mode => 'substring') FROM test_table;
true
> SELECT isearch(column, 'PREFERENCES', mode => 'substring') FROM test_table;
false -- only values are searched.
> SELECT isearch(column, '101', mode => 'substring') FROM test_table;
false -- no implicit cast to string.
-- NULL behavior.
> SELECT isearch(NULL, 'needle', mode => 'substring');
NULL
> SELECT isearch(CAST(NULL AS STRING), 'needle', mode => 'substring');
NULL
> SELECT isearch(CAST(NULL AS INT), 'needle', mode => 'substring');
false
> SELECT isearch('needle in haystack', NULL, mode => 'substring');
NULL
-- Search across multiple columns.
> SELECT isearch(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 isearch(column1, column2, 'NEEDLE', mode => 'substring')
FROM VALUES (123, 'needle in haystack') AS table(column1, column2);
true