search függvény

A következőre vonatkozik:ellenőrizze, hogyigen-e 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ó STRING kifejezés, amely a keresett szöveget jelzi.
  • mode:Szabadon választható. Egy kis- és STRING nagybetű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
  • true ha 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 ' ', emeli SEARCH_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

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