Datentypkonvertierung (Datenbankmodul)

Datentypen können in den folgenden Szenarien konvertiert werden:

  • Wenn Daten aus einem Objekt zu Daten aus einem anderen Objekt verschoben oder mit diesen verglichen oder kombiniert werden, müssen die Daten möglicherweise vom Datentyp des einen Objekts in den Datentyp des anderen Objekts konvertiert werden.

  • Wenn Daten aus einer Transact-SQL-Ergebnisspalte, einem Rückgabecode oder einem Ausgabeparameter in eine Programmvariable verschoben werden, müssen die Daten vom SQL Server-Systemdatentyp in den Datentyp der Variablen konvertiert werden.

Bei der Konvertierung zwischen einer Anwendungsvariablen und einer SQL Server-Resultsetspalte, einem Rückgabecode, Parameter oder Parametermarker werden die unterstützten Datentypkonvertierungen von der Datenbank-API (Application Programming Interface, Anwendungsprogrammierschnittstelle) definiert.

Implizite und explizite Konvertierung

Datentypen können entweder implizit oder explizit konvertiert werden.

Implizite Konvertierungen sind für den Benutzer nicht sichtbar. SQL Server konvertiert die Daten automatisch von einem Datentyp in einen anderen. Beispielsweise wird beim Vergleich eines smallint-Datentyps mit einem int-Datentyp der smallint-Datentyp implizit in int konvertiert, bevor der Vergleich fortgesetzt wird.

GETDATE() führt eine implizite Konvertierung in das Datumsformat 0 durch. SYSDATETIME() führt eine implizite Konvertierung in das Datumsformat 21 durch.

Explizite Konvertierungen verwenden die Funktionen CAST oder CONVERT.

Die Funktionen CAST und CONVERT konvertieren einen Wert (eine lokale Variable, eine Spalte oder einen anderen Ausdruck) von einem Datentyp in einen anderen. Die folgende CAST-Funktion konvertiert z. B. den numerischen Wert $157.27 in die Zeichenfolge '157.27':

CAST ( $157.27 AS VARCHAR(10) )

Verwenden Sie CAST anstelle von CONVERT, wenn der Transact-SQL-Programmcode dem ISO-Standard entsprechen soll. Verwenden Sie hingegen CONVERT anstelle von CAST, wenn Sie die Vorteile der style-Funktionalität in CONVERT nutzen möchten.

In der folgenden Abbildung werden alle expliziten und impliziten Datentypkonvertierungen aufgeführt, die für die vom SQL Server-System bereitgestellten Datentypen zulässig sind. Zu diesen gehören xml, bigint und sql_variant. Es gibt keine implizite Konvertierung bei der Zuweisung vom sql_variant-Datentyp, eine implizite Konvertierung zum sql_variant-Datentyp findet jedoch statt.

Datentyp-Konvertierungstabelle

Verhalten bei der Datentypkonvertierung

Einige implizite und explizite Datentypkonvertierungen werden nicht unterstützt, wenn Sie den Datentyp eines SQL Server-Objekts in einen anderen konvertieren. Ein nchar-Wert kann nicht in einen image-Wert konvertiert werden. nchar kann nur mit der expliziten Konvertierung in binary konvertiert werden; eine implizite Konvertierung in binary wird nicht unterstützt. nchar kann jedoch explizit in nvarchar konvertiert werden.

In den folgenden Themen wird das Konvertierungsverhalten der entsprechenden Datentypen beschrieben:

binary und varbinary (Transact-SQL)

datetime2 (Transact-SQL)

money und smallmoney (Transact-SQL)

bit (Transact-SQL)

datetimeoffset (Transact-SQL)

smalldatetime (Transact-SQL)

char und varchar (Transact-SQL)

decimal und numeric (Transact-SQL)

sql_variant (Transact-SQL)

date (Transact-SQL)

float und real (Transact-SQL)

time (Transact-SQL)

datetime (Transact-SQL)

int, bigint, smallint und tinyint (Transact-SQL)

uniqueidentifier (Transact-SQL)

Konvertieren von Datentypen mithilfe von gespeicherten Prozeduren der OLE-Automatisierung

Da SQL Server Transact-SQL-Datentypen und die OLE-Automatisierung Visual Basic-Datentypen verwendet, müssen die gespeicherten Prozeduren der OLE-Automatisierung Daten, die übergeben werden, konvertieren.

In der folgenden Tabelle werden die Konvertierungen von SQL Server in Visual Basic dargestellt.

SQL Server-Datentyp

Visual Basic-Datentyp

char, varchar, text, nvarchar, ntext

String

decimal, numeric

String

bit

Boolean

binary, varbinary, image

Eindimensionales Byte()-Array

int

Long

smallint

Integer

tinyint

Byte

float

Double

real

Single

money, smallmoney

Currency

datetime, smalldatetime

Date

Beliebige auf NULL festgelegte Typen

Variant festgelegt auf NULL

Alle einzelnen SQL Server-Werte mit Ausnahme der binary-, varbinary- und image-Werte werden in einen einzelnen Visual Basic-Wert konvertiert. Diese Werte werden in ein eindimensionales Byte()-Array in Visual Basic konvertiert. Dieses Array weist einen Bereich von Byte(0 bis length1) auf, wobei length die Anzahl der Bytes in den SQL Server binary-, varbinary- oder image-Werten darstellt.

Im Folgenden sehen Sie die Konvertierungen von Visual Basic-Datentypen in SQL Server-Datentypen.

Visual Basic-Datentyp

SQL Server-Datentyp

Long, Integer, Byte, Boolean, Object

int

Double, Single

float

Currency

money

Date

datetime

String mit maximal 4000 Zeichen

varchar/nvarchar

String mit mehr als 4000 Zeichen

text/ntext

Eindimensionales Byte()-Array mit maximal 8000 Byte

varbinary

Eindimensionales Byte()-Array mit mehr als 8000 Byte

image

Siehe auch

Verweis

Gespeicherte OLE-Automatisierungsprozeduren (Transact-SQL)

CAST und CONVERT (Transact-SQL)

Datentypen (Transact-SQL)

COLLATE (Transact-SQL)