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

    數據類型中所述 之型別的常值。

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