共用方式為


SQL 運算式

適用於:勾選是 Databricks SQL 勾選是 Databricks Runtime

表達式是一種公式,會使用函數或運算符,根據常值或數據行、欄位或變數的參考來計算結果。

語法

{ literal |
  named_parameter_marker |
  unnamed_parameter_marker |
  column_reference |
  field_reference |
  parameter_reference |
  CAST expression |
  CASE expression |
  COLLATE expression |
  expr operator expr |
  operator expr |
  expr [ expr ] |
  function_invocation |
  ( expr ) |
  ( expr, expr [, ... ] ) |
  scalar_subquery }

scalar_subquery
  ( query )

中的 expr [ expr ] 括弧是實際的方括弧,但不表示選擇性語法。

參數

  • 字面意義

    資料類型中描述的類型之實際值。

  • 命名參數標記

    由提交 SQL 語句的 API 提供的值之具名稱和類型的佔位符。

  • 未命名參數標記

    提交 SQL 語句的 API 所提供的值的未命名且具類型的佔位元。

  • column_reference

    數據表中的列或列別名的參考。

  • field_reference

    STRUCT類型中欄位的參考。

  • parameter_reference

    在函式主體中引用 SQL 使用者定義函式的參數。 參考可能會使用參數的不限定名稱,或將名稱限定為函式名稱。 參數會在解析標識符時構成最外層的範圍。

  • CAST 表達式

    將引數轉型為不同類型的表達式。

  • CASE 表達式

    允許條件式評估的表達式。

  • COLLATE 運算式

    將明確的排序方式附加到字符串運算的運算式中。

  • expr

    operator 結合的表達式本身或作為函式的參數。

  • 運算子

    一元或二元運算符。

  • 運算式 [ 運算式 ]

    對陣列元素或映射鍵的參考。

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