isearch 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.

Kis- és nagybetűs keresést végez a megadott célkifejezéseken belüli szöveg számára.

isearchaz egyébként azonos működésű függvény kis- és nagybetűket nem érzéketlen változatasearch.

Syntax

isearch ( 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 BOOLEAN érték, amely jelzi, hogy a keresési minta egyezik-e bármilyen string által kereshető célkifejezéssel, figyelmen kívül hagyva a case-et.

Megjegyzések:

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 isearch kívül hagyja azokat a mezőket, amelyek nem string által kereshetők.

Az VARIANT kifejezések isearch esetén csak azok levélcsomópontjait vizsgálja, amelyek típusúak VOID vagy STRING.

A isearch 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, figyelmen kívül hagyva esetet.
  • 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, figyelmen kívül hagyva az esetet. 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 az UAX#29 szóhatárokkal közvetlenül előtte és után jelenik meg, figyelmen kívül hagyva a case-et. Egy olyan minta, amely nem tartalmaz szavakat, mint '!!!' például vagy ' ', emeli SEARCH_INVALID_WORD_PATTERNa -t .

Az isearch 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 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