Ausdrücke (Transact-SQL)

Eine Kombination aus Symbolen und Operatoren, die SQL Server Database Engine (Datenbankmodul) auswertet, um einen einzelnen Datenwert zu erhalten.Einfache Ausdrücke können aus einzelnen Konstanten, Variablen, Spalten oder Skalarfunktionen bestehen. Mithilfe von Operatoren können zwei oder mehrere einfache Ausdrücke zu einem komplexen Ausdruck verknüpft werden.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

{ constant | scalar_function | [ table_name. ] column | variable 
        | ( expression ) | ( scalar_subquery ) 
    | { unary_operator } expression 
    | expression { binary_operator } expression 
    | ranking_windowed_function | aggregate_windowed_function
}

Argumente

Begriff

Definition

constant

Ein Symbol, das einen einzelnen bestimmten Datenwert darstellt. Weitere Informationen finden Sie unter Konstanten (Transact-SQL).

scalar_function

Eine Transact-SQL-Syntaxeinheit, die einen bestimmten Dienst bereitstellt und einen einzelnen Wert zurückgibt. scalar_function kann eine integrierte Skalarfunktion, z. B. die Funktion SUM, GETDATE oder CAST, oder eine benutzerdefinierte Skalarfunktion sein.

[ table_name. ]

Der Name oder Alias einer Tabelle.

column

Der Name einer Spalte. Nur der Name der Spalte ist in einem Ausdruck zulässig.

variable

Der Name einer Variablen oder eines Parameters. Weitere Informationen finden Sie unter DECLARE @local_variable (Transact-SQL).

(expression )

Ein beliebiger gültiger Ausdruck, wie er in diesem Thema definiert ist. Die Klammern sind gruppierende Operatoren, die sicherstellen, dass alle Operatoren in dem in Klammern stehenden Ausdruck ausgewertet werden, bevor der resultierende Ausdruck mit einem weiteren Ausdruck kombiniert wird.

(scalar_subquery)

Eine Unterabfrage, die einen Wert zurückgibt. Beispiel:

SELECT MAX(UnitPrice)

FROM Products

{ unary_operator }

Ein Operator, der nur einen numerischen Operanden besitzt:

  • + zeigt eine positive Zahl an.

  • - zeigt eine negative Zahl an.

  • ~ zeigt den Einserkomplementoperator an.

Unäre Operatoren können nur auf Ausdrücke angewendet werden, die zu einem der Datentypen in der numerischen Datentypkategorie ausgewertet werden.

{ binary_operator }

Ein Operator, der die Art und Weise definiert, in der zwei Ausdrücke kombiniert werden, um ein einzelnes Resultat zu liefern. binary_operator kann ein arithmetischer Operator, der Zuweisungsoperator (=), ein bitweiser Operator, ein Vergleichsoperator, ein logischer Operator, der Operator für Zeichenfolgenverkettung (+) oder ein unärer Operator sein. Weitere Informationen zu Operatoren finden Sie unter Operatoren (Transact-SQL).

ranking_windowed_function

Eine beliebige Transact-SQL-Rangfolgefunktion. Weitere Informationen finden Sie unter Rangfolgefunktionen (Transact-SQL).

aggregate_windowed_function

Eine beliebige Transact-SQL-Aggregatfunktion mit der OVER-Klausel. Weitere Informationen finden Sie unter OVER-Klausel (Transact-SQL).

Ergebnisse von Ausdrücken

Bei einfachen Ausdrücken, die aus einer einzelnen Konstante, Variablen, Skalarfunktion oder einem Spaltennamen bestehen, entsprechen Datentyp, Sortierung, Genauigkeit, Anzahl der Dezimalstellen und Wert des Ausdrucks den jeweiligen Eigenschaften (Datentyp, Sortierung, Genauigkeit usw.) des Elements, auf das verwiesen wird.

Werden zwei Ausdrücke mithilfe von Vergleichs- oder logischen Operatoren kombiniert, ist das Ergebnis vom booleschen Datentyp. Das Ergebnis nimmt einen der folgenden Werte an: TRUE, FALSE oder UNKNOWN. Weitere Informationen zu booleschen Datentypen finden Sie unter Operatoren (Transact-SQL).

Werden zwei Ausdrücke mithilfe von arithmetischen Operatoren, bitweisen Operatoren oder Zeichenfolgenoperatoren kombiniert, bestimmt der Operator den resultierenden Datentyp.

Komplexe Ausdrücke, die aus vielen Symbolen und Operatoren bestehen, werden zu einem Ergebnis mit genau einem Wert ausgewertet. Der Datentyp, die Sortierung, die Genauigkeit und der Wert des resultierenden Ausdrucks werden bestimmt, indem immer jeweils zwei Teilausdrücke kombiniert und ausgewertet werden, bis ein Endergebnis erreicht ist. Die Reihenfolge, in der die Ausdrücke kombiniert werden, ist durch die Rangfolge der Operatoren im Ausdruck definiert.

Hinweise

Zwei Ausdrücke können mit einem Operator kombiniert werden, wenn die Datentypen beider Ausdrücke vom Operator unterstützt werden und mindestens eine der folgenden Bedingungen erfüllt ist:

  • Die Ausdrücke besitzen den gleichen Datentyp.

  • Der Datentyp niedrigerer Rangfolge kann implizit in den Datentyp höherer Rangfolge konvertiert werden.

Falls die Ausdrücke diese Bedingungen nicht erfüllen, kann mit den Funktionen CAST oder CONVERT der Datentyp niedrigerer Rangfolge explizit in den Datentyp höherer Rangfolge konvertiert werden oder in einen dazwischen liegenden Datentyp, der implizit in den Datentyp höherer Rangfolge konvertiert werden kann.

Falls weder die implizite noch die explizite Konvertierung unterstützt wird, können die beiden Ausdrücke nicht kombiniert werden.

Die Sortierung eines Ausdrucks, der zu einer Zeichenfolge ausgewertet wird, wird entsprechend den Regeln zur Sortierungsrangfolge festgelegt. Weitere Informationen finden Sie unter Rangfolge von Sortierungen (Transact-SQL).

In einer Programmiersprache wie beispielsweise C oder MicrosoftVisual Basic wird ein Ausdruck immer zu einem einzelnen Ergebnis ausgewertet.Für Ausdrücke in einer Transact-SQL-Auswahlliste gilt eine Abwandlung dieser Regel: Der Ausdruck wird für jede Zeile des Resultsets einzeln ausgewertet. Ein einzelner Ausdruck kann für jede Zeile im Resultset einen anderen Wert annehmen, aber jede Zeile hat nur genau einen Wert für den Ausdruck. In der folgenden SELECT-Anweisung sind beispielsweise sowohl der Verweis auf ProductID als auch der Term 1+2 in der Auswahlliste Ausdrücke:

USE AdventureWorks;
GO
SELECT ProductID, 1+2
FROM Production.Product;
GO

Der Ausdruck 1+2 wird für jede Zeile des Resultsets zu 3 ausgewertet. Obwohl der Ausdruck ProductID für jede Zeile des Resultsets einen eindeutigen Wert erzeugt, besitzt jede Zeile nur genau einen Wert für ProductID.