SQL 式
適用対象: Databricks SQL Databricks Runtime
式は、関数または演算子を使用し、リテラルや、列、フィールド、または変数の参照に基づいて結果を計算する数式です。
構文
{ literal |
named_parameter_marker |
unnamed_parameter_marker |
column_reference |
field_reference |
parameter_reference |
CAST expression |
CASE expression |
expr operator expr |
operator expr |
expr [ expr ] |
function_invocation |
( expr ) |
( expr, expr [, ... ] ) |
scalar_subquery }
scalar_subquery
( query )
expr [ expr ]
の角かっこは実際の角かっこであり、省略可能な構文を示すものではありません。
パラメーター
literal
「データ型」に説明されている型のリテラル。
-
名前と型指定付きのプレースホルダー。SQL ステートメントを送信する API から提供される値が入ります。
-
名前なしの型指定付きプレースホルダー。SQL ステートメントを送信する API から提供される値が入ります。
column_reference
テーブルの列または列の別名への参照。
field_reference
STRUCT 型 のフィールドへの参照。
-
関数の本体からの SQL ユーザー定義関数のパラメーターへの参照。 参照では、パラメーターの非修飾名を使用することも、関数名で名前を修飾することもできます。 パラメーターは、識別子を解決するときに最も外側のスコープを構成します。
-
引数を別の型にキャストする式。
-
条件の評価を可能にする式。
expr
operator
で結合されるか、関数の引数である式自体。-
単項または二項演算子。
-
配列要素またはマップ キーへの参照。
-
組み込みまたはユーザー定義の関数の呼び出し
詳細については、「function_invocation 」を参照してください。
( expr )
演算子の優先順位をオーバーライドする強制的な優先順位。
( expr, expr [, … ] )
2 つ以上のフィールドの
struct
を作成します。 この表記は struct 関数と同義です。-
( query )
1 つの列と最大で 1 つの行を返す必要があるクエリに基づく式。
各関数と演算子のページでは、パラメーターで想定されるデータ型が説明されています。 Databricks Runtime では「SQL データ型のルール」を使用して、予期される型への暗黙的なキャストが実行されます。 指定した引数に対して演算子または関数が無効な場合、Databricks SQL によってエラーが発生します。
名前解決の詳細については、「列、フィールド、パラメーター、変数の解決」を参照してください。
定数式
リテラルまたは引数なしの決定論的関数のみに基づいた式。 Azure Databricks では通常のリテラルが必要な場合に式を実行し、結果の定数を使用できます。
ブール式 (Boolean expression)
結果の型が BOOLEAN
の式。 ブール式は条件または述語と呼ばれることもあります。
スカラー サブクエリ
( query )
形式の式。 クエリでは、1 つの列と最大で 1 つの行を含むテーブルを返す必要があります。
クエリから行が返されない場合、結果は NULL
です。
クエリで複数の行が返される場合、Azure Databricks によってエラーが返されます。
それ以外の場合、結果はクエリによって返される値になります。
単純式
query
を含まない式 (スカラー サブクエリや EXISTS
述語など)。
例
> SELECT 1;
1
> SELECT (SELECT 1) + 1;
2
> SELECT 1 + 1;
2
> SELECT 2 * (1 + 2);
6
> SELECT 2 * 1 + 2;
4
> SELECT substr('Spark', 1, 2);
Sp
> SELECT c1 + c2 FROM VALUES(1, 2) AS t(c1, c2);
3
> SELECT a[1] FROM VALUES(array(10, 20)) AS T(a);
20
> SELECT true;
true
> SELECT (c1, (c2, c3)) FROM VALUES(1, 2, 3) AS T(c1, c2, c3);
{"c1":1,"col2":{"c2":2,"c3":3}}