Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Magazijn in Microsoft Fabric
SQL-database in Microsoft Fabric Preview
Gegevenstypen met exacte getallen die gebruikmaken van gehele getallen. Als u ruimte in de database wilt besparen, gebruikt u het kleinste gegevenstype dat op betrouwbare wijze alle mogelijke waarden kan bevatten. Tinyint is bijvoorbeeld voldoende voor een kleine opzoektabel met statuswaarden, omdat deze maximaal 256 rijen kan opslaan. Maar tinyint is niet voldoende voor een lijst met werknemers, omdat uw bedrijf honderden of duizenden werknemers kan hebben.
| Gegevenstype | Range | Bereikexpressie | Storage |
|---|---|---|---|
| bigint | -9.223.372.036.854.775.808 tot 9.223.372.036.854.775.807 | -2^63 tot 2^63-1 | 8 bytes |
| int | -2.147.483.648 tot 2.147.483.647 | -2^31 tot 2^31-1 | 4 bytes |
| smallint | -32.768 tot 32.767 | -2^15 tot 2^15-1 | 2 bytes |
| tinyint | 0 tot 255 | 2^0-1 tot 2^8-1 | 1 byte |
Remarks
Het gegevenstype int is het primaire gegevenstype geheel getal in SQL Server. Het gegevenstype bigint is bedoeld voor gebruik wanneer gehele getallen mogelijk groter zijn dan het bereik dat wordt ondersteund door het gegevenstype int .
bigint past tussen smallmoney en int in het gegevenstypeprioriteitsdiagram.
Functies retourneren alleen bigint als de parameterexpressie een bigint-gegevenstype is. SQL Server promoveert niet automatisch andere gehele gegevenstypen (tinyint, smallint en int) naar bigint.
Conversie en parameterisatie
Wanneer u de +operatoren , -,*, /of % rekenkundige operatoren gebruikt om impliciete of expliciete conversie uit te voeren van int-, smallint-, tinyint- of bigint-constantewaarden voor de float-, real-, decimale of numerieke gegevenstypen, zijn de regels die SQL Server toepast wanneer het gegevenstype en de precisie van de expressieresultaten worden berekend, afhankelijk van of de query automatisch wordt geparameteriseerd of niet.
Daarom kunnen vergelijkbare expressies in query's soms verschillende resultaten opleveren. Wanneer een query niet automatisch wordt geparameteriseerd, wordt de constante waarde eerst geconverteerd naar decimaal, waarvan de precisie net groot genoeg is om de waarde van de constante vast te houden, voordat deze wordt geconverteerd naar het opgegeven gegevenstype. De constante waarde 1 wordt bijvoorbeeld geconverteerd naar decimaal(1,0) en de constante waarde 250 wordt geconverteerd naar decimaal(3,0).
Wanneer een query automatisch wordt geparameteriseerd, wordt de constante waarde altijd geconverteerd naar decimaal(10,0) voordat deze wordt geconverteerd naar het uiteindelijke gegevenstype. Wanneer de /-operator betrokken is, kan niet alleen de precisie van het resultaattype verschillen tussen vergelijkbare query's, maar de resultaatwaarde kan ook verschillen. De resultaatwaarde van een automatisch geparameteriseerde query die de expressie SELECT CAST (1.0 / 7 AS float)bevat, verschilt bijvoorbeeld van de resultaatwaarde van dezelfde query die niet automatisch is geparameteriseerd, omdat de resultaten van de automatisch geparameteriseerde query worden afgekapt zodat deze in het gegevenstype decimal(10,0) passen.
Het kleine gegevenstype wordt niet ondersteund in Microsoft Fabric.
Geheel getalgegevens converteren
Wanneer gehele getallen impliciet worden geconverteerd naar een tekengegevenstype, als het gehele getal te groot is om in het tekenveld te passen, gebruikt SQL Server ASCII-teken 42, het sterretje (*).
Gehele getallen groter dan 2.147.483.647 worden geconverteerd naar het decimale gegevenstype, niet het gegevenstype bigint . In het volgende voorbeeld ziet u dat wanneer de drempelwaarde wordt overschreden, het gegevenstype van het resultaat verandert van een int in een decimaal getal.
SELECT 2147483647 / 2 AS Result1,
2147483649 / 2 AS Result2;
Hier is het resultatenoverzicht.
Result1 Result2
----------- ------------------
1073741823 1073741824.500000
Examples
In het volgende voorbeeld wordt een tabel gemaakt met behulp van de gegevenstypen bigint, int, smallint en tinyint . Waarden worden ingevoegd in elke kolom en geretourneerd in de SELECT instructie.
CREATE TABLE dbo.MyTable
(
MyBigIntColumn BIGINT,
MyIntColumn INT,
MySmallIntColumn SMALLINT,
MyTinyIntColumn TINYINT
);
GO
INSERT INTO dbo.MyTable
VALUES (9223372036854775807, 2147483647, 32767, 255);
GO
SELECT MyBigIntColumn,
MyIntColumn,
MySmallIntColumn,
MyTinyIntColumn
FROM dbo.MyTable;
Hier is het resultatenoverzicht.
MyBigIntColumn MyIntColumn MySmallIntColumn MyTinyIntColumn
-------------------- ----------- ---------------- ---------------
9223372036854775807 2147483647 32767 255