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 [, ... ] )

    struct建立兩個或多個欄位的 。 這個標記法與結構函 式同義

  • scalar_subquery

    • 查詢

      根據必須傳回單一資料行和最多一個資料列之查詢的運算式。

每個 函式和運算子 的頁面都會描述其參數預期的資料類型。 Azure Databricks 會使用 SQL 資料類型規則 ,對預期的類型執行隱含轉換。 如果提供的引數運算子或函式無效,Azure Databricks 就會引發錯誤。

如需名稱解析的詳細資訊,請參閱 資料行、欄位、參數和變數解析

常數運算式

運算式,僅以不含引數的常值或決定性函式為基礎。 Azure Databricks 可以執行運算式,並使用所需的常值產生的常數。

布林運算式

結果型別為 的 BOOLEAN 運算式。 布林運算式有時 也稱為條件 述詞

純量子查詢

表單 ( query ) 的運算式。 查詢必須傳回具有一個資料行且最多一個資料列的資料表。

如果查詢沒有傳回任何資料列,則結果為 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}}