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

Exakte Zahlendatentypen für ganzzahlige Daten.

Datentyp

Bereich

Speicherung

bigint

-2^63 (-9,223,372,036,854,775,808) bis 2^63-1 (9,223,372,036,854,775,807)

8 Byte

int

-2^31 (-2,147,483,648) bis 2^31-1 (2,147,483,647)

4 Byte

smallint

-2^15 (-32,768) bis 2^15-1 (32,767)

2 Byte

tinyint

0 bis 255

1 Byte

Hinweise

Der int-Datentyp ist der primäre ganzzahlige Datentyp in SQL Server. Der bigint-Datentyp ist für Fälle bestimmt, in denen ganzzahlige Werte den durch den int-Datentyp unterstützten Bereich überschreiten.

bigint passt zwischen smallmoney und int in der Rangfolge der Datentypen.

Funktionen geben nur bigint zurück, wenn der Parameterausdruck ein bigint-Datentyp ist. SQL Server nimmt nicht automatisch eine Höherstufung der ganzzahligen Datentypen (tinyint, smallint und int) zu bigint vor.

VorsichtshinweisVorsicht

Wenn Sie die arithmetischen Operatoren +, -, *, / oder % verwenden, um eine implizite oder explizite Konvertierung der konstanten Werte int, smallint, tinyint oder bigint in die Datentypen float, real, decimal oder numeric auszuführen, wendet SQL Server beim Berechnen des Datentyps und der Genauigkeit der Ausdrucksergebnisse unterschiedliche Regeln an, je nachdem, ob die Abfrage automatisch parametrisiert wurde oder nicht.

Aus diesem Grund können ähnliche Ausdrücke in Abfragen unterschiedliche Ergebnisse erzeugen. Wenn eine Abfrage nicht automatisch parametrisiert wird, wird der konstante Wert vor dem Konvertieren in den angegebenen Datentyp zunächst in den numeric-Datentyp konvertiert, dessen Genauigkeit für den Wert der Konstanten genau ausreicht. Der konstante Werte 1 wird beispielsweise in numeric (1, 0) und der konstante Wert 250 in numeric (3, 0) konvertiert.

Wenn eine Abfrage automatisch parametrisiert wird, wird der konstante Wert vor dem Konvertieren in den endgültigen Datentyp immer in numeric (10, 0) konvertiert. Wenn der Operator / verwendet wird, kann bei ähnlichen Abfragen nicht nur die Genauigkeit des Ergebnistyps variieren, sondern auch der Ergebniswert. Der Ergebniswert einer automatisch parametrisierten Abfrage, die den Ausdruck SELECT CAST (1.0 / 7 AS float) einschließt, weicht beispielsweise vom Ergebniswert derselben Abfrage (die nicht automatisch parametrisiert wurde) ab, da die Ergebnisse der automatisch parametrisierten Abfrage abgeschnitten, d. h. an die Länge des numeric (10, 0)-Datentyps angepasst werden. Weitere Informationen zu automatisch parametrisierten Abfragen finden Sie unter Einfache Parametrisierung.