Datentypkonvertierung (Datenbank-Engine)Data type conversion (Database Engine)

GILT FÜR: jaSQL Server jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Datentypen können in den folgenden Szenarien konvertiert werden:Data types can be converted in the following scenarios:

  • Wenn Daten aus einem Objekt zu einem anderen Objekt verschoben oder mit diesem verglichen oder kombiniert werden, müssen die Daten möglicherweise vom Datentyp des einen Objekts in den Datentyp des anderen Objekts konvertiert werden.When data from one object is moved to, compared with, or combined with data from another object, the data may have to be converted from the data type of one object to the data type of the other.
  • Wenn Daten aus einer Ergebnisspalte, einem Rückgabecode oder einem Ausgabeparameter von Transact-SQLTransact-SQL in eine Programmvariable verschoben werden, müssen die Daten vom SQL ServerSQL Server-Systemdatentyp in den Datentyp der Variablen konvertiert werden.When data from a Transact-SQLTransact-SQL result column, return code, or output parameter is moved into a program variable, the data must be converted from the SQL ServerSQL Server system data type to the data type of the variable.

Bei der Konvertierung zwischen einer Anwendungsvariablen und einer Resultsetspalte, einem Rückgabecode, einem Parameter oder Parametermarker von SQL ServerSQL Server werden die unterstützten Datentypkonvertierungen von der Datenbank-API (Application Programming Interface, Anwendungsprogrammierschnittstelle) definiert.When you convert between an application variable and a SQL ServerSQL Server result set column, return code, parameter, or parameter marker, the supported data type conversions are defined by the database API.

Implizite und explizite KonvertierungImplicit and explicit conversion

Datentypen können entweder implizit oder explizit konvertiert werden.Data types can be converted either implicitly or explicitly.

Implizite Konvertierungen sind für den Benutzer nicht sichtbar.Implicit conversions are not visible to the user. SQL ServerSQL Server konvertiert die Daten automatisch von einem Datentyp in einen anderen.automatically converts the data from one data type to another. Beispielsweise wird beim Vergleich eines smallint-Datentyps mit einem int-Datentyp der smallint-Datentyp implizit in int konvertiert, bevor der Vergleich fortgesetzt wird.For example, when a smallint is compared to an int, the smallint is implicitly converted to int before the comparison proceeds.

GETDATE() konvertiert das Datumsformat implizit in 0.GETDATE() implicitly converts to date style 0. SYSDATETIME() konvertiert das Datumsformat implizit in 21.SYSDATETIME() implicitly converts to date style 21.

Explizite Konvertierungen verwenden die Funktionen CAST oder CONVERT.Explicit conversions use the CAST or CONVERT functions.

Die Funktionen CAST und CONVERT konvertieren einen Wert (eine lokale Variable, eine Spalte oder einen anderen Ausdruck) von einem Datentyp in einen anderen.The CAST and CONVERT functions convert a value (a local variable, a column, or another expression) from one data type to another. Die folgende CAST-Funktion konvertiert z. B. den numerischen Wert $157.27 in die Zeichenfolge '157.27':For example, the following CAST function converts the numeric value of $157.27 into a character string of '157.27':

CAST ( $157.27 AS VARCHAR(10) )  

Verwenden Sie CAST anstelle von CONVERT, wenn der Transact-SQLTransact-SQL-Programmcode dem ISO-Standard entsprechen soll.Use CAST instead of CONVERT if you want Transact-SQLTransact-SQL program code to comply with ISO. Verwenden Sie hingegen CONVERT anstelle von CAST, wenn Sie die Vorteile der Formatfunktionen in CONVERT nutzen möchten.Use CONVERT instead of CAST to take advantage of the style functionality in CONVERT.

In der folgenden Abbildung werden alle expliziten und impliziten Datentypkonvertierungen aufgeführt, die für die vom SQL ServerSQL Server-System bereitgestellten Datentypen zulässig sind.The following illustration shows all explicit and implicit data type conversions that are allowed for SQL ServerSQL Server system-supplied data types. Dazu gehören xml, bigint und sql_variant.These include xml, bigint, and sql_variant. Es gibt keine implizite Konvertierung bei der Zuweisung vom sql_variant-Datentyp, eine implizite Konvertierung zum sql_variant-Datentyp findet jedoch statt.There is no implicit conversion on assignment from the sql_variant data type, but there is implicit conversion to sql_variant.

Konvertierungstabelle für DatentypenData type conversion table

Verhalten bei der DatentypkonvertierungData type conversion behaviors

Einige implizite und explizite Datentypkonvertierungen werden nicht unterstützt, wenn Sie den Datentyp eines SQL ServerSQL Server-Objekts in einen anderen konvertieren.Some implicit and explicit data type conversions are not supported when you are converting the data type of one SQL ServerSQL Server object to another. Ein nchar-Wert kann nicht in einen image-Wert konvertiert werden.For example, an nchar value cannot be converted to an image value. nchar kann nur mit der expliziten Konvertierung in binary konvertiert werden; eine implizite Konvertierung in binary wird nicht unterstützt.An nchar can only be converted to binary by using explicit conversion, an implicit conversion to binary is not supported. nchar kann jedoch explizit oder implizit in nvarchar konvertiert werden.However, an nchar can be explicitly or implicitly converted to nvarchar.

In den folgenden Themen wird das Konvertierungsverhalten der entsprechenden Datentypen beschrieben:The following topics describe the conversion behaviors exhibited by their corresponding data types:

Konvertieren von Datentypen mithilfe von gespeicherten Prozeduren der OLE-AutomatisierungConverting Data Types by Using OLE Automation Stored Procedures

Da SQL ServerSQL Server Transact-SQLTransact-SQL-Datentypen und die OLE-Automatisierung Visual BasicVisual Basic-Datentypen verwendet, müssen die gespeicherten Prozeduren der OLE-Automatisierung übergebene Daten konvertieren.Because SQL ServerSQL Server uses Transact-SQLTransact-SQL data types and OLE Automation uses Visual BasicVisual Basic data types, the OLE Automation stored procedures must convert the data that passes between them.

In der folgenden Tabelle werden die Konvertierungen von SQL ServerSQL Server-Datentypen in Visual BasicVisual Basic-Datentypen dargestellt.The following table describes SQL ServerSQL Server to Visual BasicVisual Basic data type conversions.

SQL Server-DatentypSQL Server data type Visual Basic-DatentypVisual Basic data type
char, varchar, text, nvarchar, ntextchar, varchar, text, nvarchar, ntext StringString
decimal, numericdecimal, numeric StringString
bitbit BooleanBoolean
binary, varbinary, imagebinary, varbinary, image Eindimensionales Byte()-ArrayOne-dimensional Byte() array
intint LongLong
smallintsmallint IntegerInteger
tinyinttinyint ByteByte
floatfloat DoubleDouble
realreal SingleSingle
money, smallmoneymoney, smallmoney WährungCurrency
datetime, smalldatetimedatetime, smalldatetime DatumDate
Beliebige auf NULL festgelegte TypenAnything set to NULL Variant wurde auf NULL festgelegt.Variant set to Null

Alle einzelnen SQL ServerSQL Server-Werte mit Ausnahme der binary-, varbinary- und image-Werte werden in einen einzelnen Visual BasicVisual Basic-Wert konvertiert.All single SQL ServerSQL Server values are converted to a single Visual BasicVisual Basic value with the exception of binary, varbinary, and image values. Diese Werte werden in ein eindimensionales Byte()-Array in Visual BasicVisual Basic konvertiert.These values are converted to a one-dimensional Byte() array in Visual BasicVisual Basic. Dieses Array weist einen Bereich von Byte ( 0 bis length 1 ) auf, wobei length der Anzahl von Bytes in den SQL ServerSQL Server-Werten binary, varbinary oder image entspricht.This array has a range of Byte( 0 to length 1 ) where length is the number of bytes in the SQL ServerSQL Server binary, varbinary, or image values.

Im Folgenden sehen Sie die Konvertierungen von Visual BasicVisual Basic-Datentypen in SQL ServerSQL Server-Datentypen.These are the conversions from Visual BasicVisual Basic data types to SQL ServerSQL Server data types.

Visual Basic-DatentypVisual Basic data type SQL Server-DatentypSQL Server data type
Long, Integer, Byte, Boolean, ObjectLong, Integer, Byte, Boolean, Object intint
Double, SingleDouble, Single floatfloat
WährungCurrency moneymoney
DatumDate datetimedatetime
String mit maximal 4000 ZeichenString with 4000 characters or less varchar/nvarcharvarchar/nvarchar
String mit mehr als 4000 ZeichenString with more than 4000 characters text/ntexttext/ntext
Eindimensionales Byte()-Array mit maximal 8000 ByteOne-dimensional Byte() array with 8000 bytes or less varbinaryvarbinary
Eindimensionales Byte()-Array mit mehr als 8000 ByteOne-dimensional Byte() array with more than 8000 bytes imageimage

Siehe auchSee also

Gespeicherte OLE-Automatisierungsprozeduren (Transact-SQL)OLE Automation Stored Procedures (Transact-SQL)
CAST und CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL)
Datentypen (Transact-SQL)Data Types (Transact-SQL)
COLLATE (Transact-SQL)COLLATE (Transact-SQL)