Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
fungsi
Berlaku untuk:
Databricks Runtime 19.0 ke atas
Important
Fitur ini ada di Beta. Admin ruang kerja dapat mengontrol akses ke fitur ini dari halaman Pratinjau . Lihat Kelola Pratinjau Azure Databricks.
Melakukan pencarian teks tanpa huruf besar/kecil dalam ekspresi target tertentu.
isearch adalah varian search fungsi yang tidak peka huruf besar/kecil dengan perilaku yang identik.
Syntax
isearch ( expr [, ...], search_pattern [, mode => mode] )
Arguments
-
expr: Ekspresi yang harus dicari di dalamnya. -
search_pattern: Ekspresi konstanSTRINGyang menunjukkan teks yang akan dicari. -
mode: Opsional. Literal tanpa hurufSTRINGbesar/kecil yang mengontrol bagaimana pencocokan dilakukan. Nilai yang berlaku adalah'substring'atau'word'. Nilai defaultnya adalah'substring'.
Returns
Nilai yang BOOLEAN menunjukkan apakah pola pencarian cocok dengan ekspresi target yang dapat dicari secara string, mengabaikan huruf kecil.
Notes
Dalam substring mode, pola pencarian dicocokkan secara harfiah. Karakter seperti ., *, dan % tidak memiliki makna khusus sebagai karakter ekspresi reguler atau wildcard.
Jenis berikut dapat dicari secara string:
| Type | Dapat dicari secara string ketika |
|---|---|
VOID, STRING, VARIANT |
Selalu. |
ARRAY |
Ekspresi anaknya dapat dicari secara string. |
MAP |
Ekspresi nilainya dapat dicari secara string. |
STRUCT |
Setidaknya satu ekspresi bidangnya dapat dicari secara string. |
Untuk STRUCT ekspresi, isearch mengabaikan bidang yang tidak dapat dicari secara string.
Untuk VARIANT ekspresi, isearch hanya memindai node daun mereka yang bertipe VOID atau STRING.
Ekspresi ini isearch tidak secara implisit melemparkan non-ekspresiSTRING ke STRING ekspresi.
Nilai pengembalian ditentukan sebagai berikut:
-
NULLjika pola pencarian adalahNULL. -
trueJika pola pencarian cocok dengan setidaknya satu nilai yang dapat dicari dengan string, abaikan huruf besar. -
NULLjika pola pencarian tidak cocok dengan nilai yang dapat dicari oleh string, dan setidaknya salah satu dari nilai tersebut adalahNULL. -
falsejika pola pencarian tidak cocok dengan nilai yang dapat dicari oleh string, dan tidak ada nilai tersebut yang bernilaiNULL.
Nilai-nilai berikut didukung untuk mode ini:
-
'substring': Cocok jika pola pencarian muncul di mana saja dalam nilai target, mengabaikan huruf besar. Ini adalah opsi default. -
'word': Pola pencarian dibagi menjadi kata-kata di batas kata UAX#29 . Mode ini mencocokkan kata-kata individual dalam pola pencarian tanpa memandang urutannya. Setiap kata pola cocok dengan nilai yang dapat dicari string jika muncul dalam nilai dengan batas kata UAX#29 tepat sebelum dan sesudahnya, mengabaikan huruf kecil. Pola yang tidak mengandung kata-kata, seperti'!!!'atau' ', menaikkanSEARCH_INVALID_WORD_PATTERN.
Performa isearch di tabel dapat memperoleh manfaat dari indeks pencarian teks lengkap yang sudah ada. Lihat Indeks pencarian teks lengkap pada tabel terkelola Unity Catalog untuk detailnya.
Kondisi kesalahan umum
- DATATYPE_MISMATCH. UNEXPECTED_INPUT_TYPE
- NOT_ENOUGH_ARGS
- SEARCH_INVALID_WORD_PATTERN
- SEARCH_STAR_ARGUMENT_NOT_ALLOWED
Contoh
-- 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