Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Databricks Runtime 19.0 a novější
Důležité
Tato funkce je v beta verzi. Správci pracovního prostoru můžou řídit přístup k této funkci ze stránky Previews . Viz Manage Azure Databricks preview.
Provádí vyhledávání textu v rámci zadaných cílových výrazů.
search je varianta isearch funkce rozlišující velikost písmen s jinak identickým chováním.
Syntax
search ( expr [, ...], search_pattern [, mode => mode] )
Arguments
-
expr: Výrazy, které je třeba hledat uvnitř. -
search_pattern: KonstantníSTRINGvýraz označující text, který má hledat. -
mode: Volitelné. Literál bez rozlišeníSTRINGpísmen, který řídí, jak se párování provádí. Platné hodnoty jsou'substring'a'word'. Výchozí hodnota je'substring'.
Returns
Hodnota BOOLEAN , která ukazuje, zda vyhledávací vzor odpovídá některému cílovému výrazu vyhledávatelnému řetězcem.
Notes
V substring režimu je vzor vyhledávání doslova přiřazen. Znaky .jako , *, a nemají % zvláštní význam jako regulární výrazy nebo zástupné znaky.
Následující typy jsou prohledávatelné pomocí řetězců:
| Typ | Vyhledávání v řetězci, když |
|---|---|
VOID, STRING, VARIANT |
Vždy. |
ARRAY |
Jeho dětský výraz je prohledávatelný pomocí řetězců. |
MAP |
Jeho hodnotový výraz je prohledávatelný pomocí řetězců. |
STRUCT |
Alespoň jeden z jeho výrazů pole je prohledávatelný pomocí řetězců. |
Pro STRUCT výrazy ignoruje pole, search která nejsou prohledávatelná řetězcem.
Pro VARIANT výrazy skenuje pouze jejich listové uzly, search které jsou typu VOID nebo STRING.
Tento search výraz implicitně nepřeřazuje ne-výrazySTRING do STRING výrazů.
Návratová hodnota se určuje následovně:
-
NULLpokud je vzor vyhledávání .NULL -
truepokud vyhledávací vzor odpovídá alespoň jedné hodnotě vyhledávatelné řetězcem. -
NULLpokud vyhledávací vzor neodpovídá žádné hodnotě vyhledávatelné řetězcem, a alespoň jedna z těchto hodnot je .NULL -
falsepokud vyhledávací vzor neodpovídá žádné hodnotě vyhledávatelné řetězcem a žádná z těchto hodnot neníNULL.
Pro tento režim jsou podporovány následující hodnoty:
-
'substring': Shoduje se, pokud se vyhledávací vzor objeví kdekoli uvnitř cílové hodnoty. Toto je výchozí možnost. -
'word': Vyhledávací vzor je rozdělen na slova na hranicích UAX#29 . Režim porovnává jednotlivá slova ve vyhledávacím vzoru bez ohledu na jejich pořadí. Každé vzorové slovo odpovídá hodnotě vyhledávatelné řetězce, pokud se objevuje v hodnotě s hranicemi slov UAX#29 těsně před a po něm. Vzor, který neobsahuje žádná slova, jako'!!!'nebo' ', vyvoláváSEARCH_INVALID_WORD_PATTERN.
Výkon search tabulky může těžit z předpřipraveného indexu plnotextového vyhledávání. Podrobnosti viz Full-text search indexes on Unity Catalog managed tables .
Běžné chybové podmínky
- DATATYPE_MISMATCH. UNEXPECTED_INPUT_TYPE
- Nedostatek argumentů
- 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