SQL-Ausdruck

Gilt für:check marked yes Databricks SQL check marked yes Databricks Runtime

Ein Ausdruck ist eine Formel, die mithilfe von Literalen oder Verweisen ein Ergebnis für Spalten, Felder oder Variablen verweist, indem sie Funktionen oder Operatoren verwendet.

Syntax

{ 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 )

Die Klammern in expr [ expr ] sind tatsächliche Klammern und geben keine optionale Syntax an.

Parameter

  • literal

    Ein Literal eines Typs, der in Datentypen beschrieben wird.

  • named_parameter_marker

    Ein benannter und typisierter Platzhalter für einen Wert, der von der API bereitgestellt wird, die die SQL-Anweisung übermittelt.

  • unnamed_parameter_marker

    Ein unbenannter und typisierter Platzhalter für einen Wert, der von der API bereitgestellt wird, die die SQL-Anweisung übermittelt.

  • column_reference

    Ein Verweis auf eine Spalte in einer Tabelle oder einen Spaltenalias.

  • field_reference

    Ein Verweis auf ein Feld in einem STRUCT-Typ.

  • parameter_reference

    Ein Verweis auf einen Parameter einer benutzerdefinierten SQL-Funktion mit dem Textkörper der Funktion. Der Verweis kann den nicht qualifizierten Namen des Parameters verwenden oder den Namen mit dem Funktionsnamen qualifizieren. Parameter bilden den äußersten Bereich beim Auflösen von Bezeichnern.

  • CAST-Ausdruck

    Ein Ausdruck, der das Argument in einen anderen Typ umwandelt.

  • CASE-Ausdruck

    Ein Ausdruck, der die bedingte Auswertung zulässt.

  • expr

    Ein Ausdruck für sich, der mit einem operator kombiniert wird oder der ein Argument für eine Funktion ist.

  • operator

    Ein unärer oder binärer Operator.

  • expr [ expr ]

    Ein Verweis auf ein Array-Element oder einen Zuordnungsschlüssel.

  • function_invocation

    Ein Aufruf einer integrierten oder benutzerdefinierten Funktion.

    Weitere Informationen finden Sie unter function_invocation.

  • ( expr )

    Erzwungene Rangfolge, die die Operatorrangfolge überschreibt.

  • ( expr, expr [, … ] )

    Erstellt ein struct von zwei oder mehr Feldern. Diese Notation ist synonym für die Strukturfunktion.

  • scalar_subquery:

    • ( Abfrage )

      Ein Ausdruck, der auf einer Abfrage basiert, die eine einzelne Spalte und höchstens eine Zeile zurückgeben muss.

Die Seiten für alle Funktionen und Operatoren beschreiben die Datentypen, die ihre Parameter erwarten. Azure Databricks führt die implizite Umwandlung in erwartete Typen mithilfe der SQL-Datentypregeln durch. Wenn ein Operator oder eine Funktion für das angegebene Argument ungültig ist, löst Azure Databricks einen Fehler aus.

Siehe Auflösung von Spalten, Feldern, Parametern und Variablen für weitere Informationen zur Namensauflösung.

Konstanter Ausdruck

Ein Ausdruck, der nur auf Literalen oder deterministischen Funktionen ohne Argumente basiert. Azure Databricks kann den Ausdruck ausführen und die resultierende Konstante verwenden, wenn normalerweise Literale erforderlich sind.

Boolescher Ausdruck

Ein Ausdruck mit dem Ergebnistyp BOOLEAN. Ein boolescher Ausdruck wird manchmal auch als eine Bedingung oder ein Prädikat bezeichnet.

Skalare Unterabfrage

Ein Ausdruck im Format ( query ). Die Abfrage muss eine Tabelle zurückgeben, die eine Spalte und höchstens eine Zeile enthält.

Wenn die Abfrage keine Zeile zurückgibt, ist das Ergebnis NULL. Wenn die Abfrage mehr als eine Zeile zurückgibt, gibt Azure Databricks einen Fehler zurück. Andernfalls entspricht das Ergebnis dem von der Abfrage zurückgegebenen Wert.

Einfacher Ausdruck

Ein Ausdruck ohne query, z. B. eine skalare Unterabfrage oder ein EXISTS-Prädikat.

Beispiele

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