適用対象:はい Databricks Runtime 19.0 以降と![]()
重要
この機能は ベータ版です。 ワークスペース管理者は、[ プレビュー] ページからこの機能へのアクセスを制御できます。 Manage Azure Databricks プレビューを参照してください。
指定されたターゲット列の値のいずれかにsearch_patternが見つかった場合は、trueを返します。
フルテキスト検索インデックスを使用した search クエリの高速化については、 Unity カタログのマネージド テーブルでのフルテキスト検索インデックスを参照してください。
Syntax
search ( column [, ...], search_pattern [, mode => mode] )
引数
column: 1 つ以上の検索可能なターゲット式。 検索可能な式には、次のいずれかの種類があります。-
STRINGUTF8_BINARY照合順序を使用します。 -
VARIANT。 -
STRUCT少なくとも 1 つの検索可能なフィールドが含まれます。 構造体は、任意の入れ子の深さで、検索可能なリーフ フィールドに自動的に展開されます。 -
ARRAY任意の検索可能な型。
文字列以外のターゲット値には暗黙的なキャストはありません。
-
search_pattern: 検索する値を持つ折りたたみ式 (定数)STRING式。mode: 一致STRING実行方法を制御する省略可能な名前付き引数。 つぎのいずれかです。-
'substring'(既定値): ターゲット値内の任意の場所search_pattern表示される場合に一致します。contains関数と同等です。 -
'word': 順序に関係なく、search_pattern内の個々の単語をターゲット値と照合します。
-
返品
BOOLEAN です。
ターゲット列の値のいずれかに が見つかった場合は &。 -
NULLターゲット列の値にsearch_patternが見つからず、それらの値の少なくとも 1 つがNULL場合。 -
falseそれ以外の場合。
Notes
-
isearch関数 は、大文字と小文字を区別しないsearchのバリアントで、それ以外の場合は同じ動作です。 -
STRUCT引数の場合、関数は、入れ子の深さに関係なく、最上位の構造体から到達可能なすべての検索可能なリーフ フィールドを検索します。 同じ拡張は、VARIANT値とARRAY値内のSTRUCTフィールドに再帰的に適用されます。 -
'substring'モードでは、VARIANT内のVARIANTキーと文字列以外のスカラー値は一致しません。'word'モードを使用するか、個々のフィールドを抽出して検索します。
一般的なエラー状態
Examples
-- Basic examples.
> 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, lower('NEEDLE')) FROM VALUES ('needle') AS table(column);
true
> SELECT search(column, 'quick fox', mode => 'word') FROM VALUES ('quick brown fox') AS table(column);
true
> SELECT search(column, 'qui fox', mode => 'word') FROM VALUES ('quick fox') AS table(column);
false
-- Automatic expansion of STRUCT columns to their searchable leaf fields.
> CREATE TABLE test_table (
usage_stats STRUCT<digits: INT>,
customer_info STRUCT<
contact: STRUCT<json_field: VARIANT>,
name: STRING>)
USING DELTA;
> SELECT * FROM test_table WHERE search(usage_stats.digits, 'needle');
[DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE]
> SELECT * FROM test_table WHERE search(customer_info, 'needle');
-- Equivalent to:
> SELECT * FROM test_table
WHERE search(customer_info.contact.json_field, customer_info.name, 'needle');
> SELECT * FROM test_table WHERE search(customer_info.contact, 'needle');
-- Equivalent to:
> SELECT * FROM test_table
WHERE search(customer_info.contact.json_field, 'needle');
-- VARIANT behavior: substring mode does not match keys or non-string scalar values.
> 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
> SELECT search(column, '101', mode => 'substring') FROM test_table;
false
-- NULL behavior.
> SELECT search(NULL, 'needle', mode => 'substring');
NULL
> SELECT search(CAST(NULL AS STRING), 'needle', mode => 'substring');
NULL
> SELECT search('needle in haystack', NULL, mode => 'substring');
[SEARCH_REQUIRES_STRING_LITERALS_ARGUMENTS]