Freigeben über


Datentypkonvertierung in Ausdrücken

Es gibt zwei Arten von Datenkonvertierung:

  • Implizite Konvertierungen, bei denen die Ausdrucksauswertung die Daten automatisch in einen anderen Datentyp konvertiert. Beispielsweise wird beim Vergleich eines smallint-Datentyps mit einem int-Datentyp der smallint-Datentyp implizit in int konvertiert, bevor der Vergleich ausgeführt wird.
  • Explizite Konvertierungen, bei denen mit der Umwandlung ein Wert, wie z. B. eine lokale Variable, eine Spalte oder ein anderer Ausdruck, in einen anderen Datentyp konvertiert wird. Weitere Informationen finden Sie unter CAST (SSIS).

Das folgende Diagramm zeigt den Ergebnistyp impliziter Konvertierungen von BINARY-Vorgängen. Am Schnittpunkt von Spalte und Zeile in dieser Tabelle finden Sie den Ergebnistyp einer binären Operation mit Operanden der Typen, die links (Von) und rechts (Zu) angegeben sind.

Implizite Datentypkonvertierung zwischen Datentypen

Die Schnittmenge eines integer-Wertes mit Vorzeichen und eines integer-Wertes ohne Vorzeichen ist ein integer-Wert, der potenziell größer als die beiden Argumente ist.

Für Operationen, bei denen ein integer-Wert ohne Vorzeichen mit der Länge von 8 Byte und ein integer-Wert mit Vorzeichen kombiniert werden, ist zum Klären des Ergebnisformats eine explizite Umwandlung erforderlich.

Eine Funktion mit einem einzelnen Argument gibt ein Ergebnis mit dem Datentyp des Arguments zurück, wobei folgende Ausnahmen gelten:

  • DAY, MONTH und YEAR akzeptieren ein Datum und geben ein ganzzahliges Ergebnis (DT_I4) zurück.
  • ISNULL akzeptiert einen Ausdruck eines beliebigen SSIS-Datentyps und gibt einen booleschen Datentyp (DT_BOOL) zurück.
  • SQUARE und SQRT akzeptieren einen numerischen Ausdruck und geben ein nicht integrales numerisches (DT_R8) Ergebnis zurück.

Falls die Argumente vom gleichen Datentyp sind, gehört auch das Ergebnis zu diesem Datentyp. Die einzige Ausnahme ist das Ergebnis einer binären Operation für zwei Werte mit dem DT_DECIMAL-Datentyp. In diesem Fall wird ein Ergebnis mit dem DT_NUMERIC-Datentyp zurückgegeben.

Funktionen vergleichen außerdem Zeichenfolgen-, Datums- und boolesche Werte. Bevor eine Funktion zwei Werte vergleicht, führt die Ausdrucksauswertung die folgenden impliziten Konvertierungen aus:

  • Zeichenfolgen mit einem DT_STR-Datentyp werden in den DT_WSTR-Datentyp konvertiert.
  • Datums- und Zeitwerte werden in den DT_DBTIMESTAMP-Datentyp konvertiert.

Die Ausdrucksauswertung kann einen Wert nicht implizit in einen booleschen Wert konvertieren. Der Ausdruck muss einen expliziten Umwandlungsvorgang einschließen. Weitere Informationen finden Sie unter CAST (SSIS).

ms141260.note(de-de,SQL.90).gifHinweis:
Boolesche Werte sind keine Zahlen, sondern logische Werte. Obwohl einige Umgebungen boolesche Werte als Zahlenwerte darstellen, werden Sie nicht als Zahlen gespeichert. Je nach Programmiersprache werden boolesche Werte als unterschiedliche Zahlenwerte dargestellt. Dies gilt auch für .NET Framework-Methoden. Beispielsweise konvertieren die Konvertierungsfunktionen von Visual Basic den Wert True in den Zahlenwert -1. Die System.Convert.ToInt32-Methode von .NET Framework konvertiert True jedoch in den Zahlenwert +1. In der Integration Services-Ausdruckssprache wird True in den Wert -1 konvertiert. Um Fehler oder unerwartete Ergebnisse zu vermeiden, sollten Sie keinen Code erstellen, der von bestimmten numerischen Werten für True und False abhängig ist. Nach Möglichkeit sollten bei booleschen Variablen nur die für sie vorgesehenen logischen Werte verwendet werden.

Ein Ausdruck kann Argumente und Operanden mit nicht kompatiblen Datentypen verwenden. In diesem Fall kann die Ausdrucksauswertung keine implizite Datenkonvertierung ausführen. Beispielsweise lässt die Ausdrucksauswertung den Vergleich eines Operanden mit einem Zeichenfolgen-Datentyp und eines Operanden mit einem numerischen Datentyp nicht zu. Für diesen Vergleich muss der numerische Operand explizit in einen Zeichenfolgen-Datentyp umgewandelt werden. Die Ausdruckssprache schließt einen Umwandlungsoperator ein, der die Umwandlung zwischen den Datentypen string, numeric, date und binary unterstützt. Weitere Informationen finden Sie unter CAST (SSIS).

Änderungsverlauf

Version Verlauf

17. Juli 2006

Geänderter Inhalt:
  • Tipps zur Verwendung von booleschen Werten wurden hinzugefügt.

Siehe auch

Andere Ressourcen

Konzepte der SQL Server Integration Services-Ausdrücke

Hilfe und Informationen

Informationsquellen für SQL Server 2005