Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőre vonatkozik:ellenőrizze, hogy
a Databricks Runtime 19.0-s vagy újabb verziója
Important
Ez a funkció bétaverzióban érhető el. A munkaterület rendszergazdái az Előnézetek lapon szabályozhatják a funkcióhoz való hozzáférést. Lásd: Az Azure Databricks előzetes verziójának kezelése.
Szövegkeresést végez meghatározott célkifejezéseken belül.
searcha kis- és kézzelfogó funkció változataisearch, amely egyébként azonos viselkedésű.
Syntax
search ( expr [, ...], search_pattern [, mode => mode] )
Arguments
-
expr: Az arckifejezések, amelyeket bennük kell keresni. -
search_pattern: Egy állandóSTRINGkifejezés, amely a keresett szöveget jelzi. -
mode:Szabadon választható. Egy kis- ésSTRINGnagybetűs literal, amely szabályozza, hogyan végzik a párosítást. Az érvényes értékek a következők:'substring'és'word'. Az alapértelmezett érték a'substring'.
Returns
Egy érték, amely jelzi, hogy a keresési minta egyezik-e BOOLEAN bármely string-alapú célkifejezéssel.
Notes
A substring módban a keresési minta szó szerint egyezik. Az olyan karaktereknek, mint ., *, és % nincs különleges jelentésük reguláris kifejezésként vagy vadkártya karakterként.
A következő típusok láncsorral kereshetők:
| Típus | Láncsor-keresés, amikor |
|---|---|
| \ |
Mindig. |
ARRAY |
A gyermek kifejezése string-kereshető. |
MAP |
Az értékkifejezése string alapján kereshető. |
STRUCT |
Legalább az egyik mezőkifejezése string alapján kereshető. |
Kifejezéseknél STRUCT figyelmen search kívül hagyja azokat a mezőket, amelyek nem string által kereshetők.
Az VARIANT kifejezések search esetén csak azok levélcsomópontjait vizsgálja, amelyek típusúak VOID vagy STRING.
A search kifejezés nem implicitSTRING módon nem kifejezéseket ad az STRING kifejezésekbe.
A hozamérték a következőképpen határozható meg:
-
NULLha a keresési minta .NULL -
trueha a keresési minta legalább egy string által kereshető értéket egyezik. -
NULLha a keresési minta nem egyezik meg egyetlen string által kereshető értékkel, és legalább az egyik ilyen érték .NULL -
falseha a keresési minta nem egyezik meg egyetlen string által kereshető értékkel, és egyik sem az érték.NULL
Az alábbi értékek támogatottak a módban:
-
'substring': Egyezik, ha a keresési minta megjelenik a célértéken belül. Ez az alapértelmezett beállítás. -
'word': A keresési minta az UAX#29 szóhatároknál szavakra van osztva. A mód illeszkedik az egyes szavakhoz a keresési mintában, függetlenül azok sorrendjétől. Minden mintaszó megegyezik egy string által kereshető értékkel, ha megjelenik az UAX#29 szóhatárú értékben, közvetlenül előtte és utána. Egy olyan minta, amely nem tartalmaz szavakat, mint'!!!'például vagy' ', emeliSEARCH_INVALID_WORD_PATTERNa -t .
Az search asztalon látható teljesítmény előnyt jelenthet egy előre összeszerelt, teljes szöveges keresési index. Részletekért lásd a teljes szöveges keresési indexeket a Unity Catalog menedzselt tábláin .
Gyakori hibafeltételek
- DATATYPE_MISMATCH. UNEXPECTED_INPUT_TYPE
- NOT_ENOUGH_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