SQL 式

適用対象:check marked yes Databricks SQL check marked yes 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

    データ型」に説明されている型のリテラル。

  • named_parameter_marker

    名前と型指定付きのプレースホルダー。SQL ステートメントを送信する API から提供される値が入ります。

  • unnamed_parameter_marker

    名前なしの型指定付きプレースホルダー。SQL ステートメントを送信する API から提供される値が入ります。

  • column_reference

    テーブルの列または列の別名への参照。

  • field_reference

    STRUCT 型 のフィールドへの参照。

  • parameter_reference

    関数の本体からの SQL ユーザー定義関数のパラメーターへの参照。 参照では、パラメーターの非修飾名を使用することも、関数名で名前を修飾することもできます。 パラメーターは、識別子を解決するときに最も外側のスコープを構成します。

  • CAST 式

    引数を別の型にキャストする式。

  • CASE 式

    条件の評価を可能にする式。

  • expr

    operator で結合されるか、関数の引数である式自体。

  • 演算子

    単項または二項演算子。

  • expr [ expr ]

    配列要素またはマップ キーへの参照。

  • function_invocation

    組み込みまたはユーザー定義の関数の呼び出し

    詳細については、「function_invocation 」を参照してください。

  • ( expr )

    演算子の優先順位をオーバーライドする強制的な優先順位。

  • ( expr, expr [, … ] )

    2 つ以上のフィールドの struct を作成します。 この表記は struct 関数と同義です。

  • scalar_subquery:

    • ( 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}}