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 dalam ekspresi target yang ditentukan.
search adalah varian isearch fungsi yang sensitif huruf besar-besaran dengan perilaku yang selebihnya identik.
Syntax
search ( 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.
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, search mengabaikan bidang yang tidak dapat dicari secara string.
Untuk VARIANT ekspresi, search hanya memindai node daun mereka yang bertipe VOID atau STRING.
Ekspresi ini search 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 oleh string. -
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. 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 dengan string jika muncul dalam nilai dengan batas kata UAX#29 tepat sebelum dan sesudahnya. Pola yang tidak mengandung kata-kata, seperti'!!!'atau' ', menaikkanSEARCH_INVALID_WORD_PATTERN.
Performa search 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 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