適用於:
執行時間 19.0 及以上版本
Important
這項功能位於 測試版 (Beta) 中。 工作區管理員可以從 「預覽 」頁面控制對此功能的存取。 請參閱 管理 Azure Databricks 預覽。
執行指定目標表達式內的文字不區分大小寫的搜尋。
isearch是功能中具有其他相同行為的大小寫不區分變體search。
Syntax
isearch ( expr [, ...], search_pattern [, mode => mode] )
Arguments
-
expr:那些可以尋找內心的表情。 -
search_pattern: 一個表示要搜尋的文本的常數STRING表達式。 -
mode:選擇性。 一個不區分STRING大小寫的文字,用來控制匹配的執行方式。 有效值為'substring'和'word'。 預設值為'substring'。
Returns
一個 BOOLEAN 表示搜尋模式是否符合任何字串可搜尋目標表達式的值,忽略格。
Notes
在模式中 substring ,搜尋模式會被字面上匹配。 像 .、 *、 和 % 這類字元作為正則表達式或萬用字元並無特殊意義。
以下類型可字串搜尋:
| 類型 | 字串可搜尋 |
|---|---|
VOID、STRING、VARIANT |
總是。 |
ARRAY |
其子表達式可字串搜尋。 |
MAP |
其值表達式可字串搜尋。 |
STRUCT |
至少有一個欄位表達式是可字串搜尋的。 |
對於 STRUCT 表達式,忽略 isearch 無法字串搜尋的欄位。
對於 VARIANT 表達式, isearch 僅掃描其類型 VOID 為 或 STRING的葉節點。
該 isearch 表達式不會隱含地將非STRING 表達式投射到表達式 STRING 上。
回報價值的計算方式如下:
-
NULL若搜尋模式為NULL。 -
true如果搜尋模式至少符合一個字串可搜尋的值,則忽略格。 -
NULL如果搜尋模式不符合任何可字串搜尋的值,且至少有一個值為NULL。 -
false如果搜尋模式不符合任何可搜尋的字串值,且這些值都不符合。NULL
該模式支援以下數值:
-
'substring': 若搜尋模式出現在目標值內,則不考慮大小寫,則為匹配。 這是預設選項。 -
'word'搜尋模式在 UAX#29 字邊界被分割成單字。 此模式會匹配搜尋模式中單字,無論順序如何。 每個模式字若出現在值前後緊接著 UAX#29 字邊界(忽略格)時,則該字詞與可字串搜尋值相符。 若圖案中無字,'!!!'如 或' ',則SEARCH_INVALID_WORD_PATTERN升起。
isearch桌面上的效能可從預先建構的全文搜尋索引中受益。 詳情請參閱 Unity 目錄管理表格上的全文搜尋索引 。
常見錯誤條件
- DATATYPE_MISMATCH。UNEXPECTED_INPUT_TYPE
- NOT_ENOUGH_ARGS
- SEARCH_INVALID_WORD_PATTERN
- SEARCH_STAR_ARGUMENT_NOT_ALLOWED
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