Aracılığıyla paylaş


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

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Tamsayı verisi kullanan tam sayı veri türleri. Veritabanında yer kazanmak için, tüm olası değerleri güvenilir bir şekilde içerebilen en küçük veri türünü kullanın. Örneğin, durum değerlerine sahip küçük bir arama tablosu için tinyint yeterli olabilir, çünkü 256 satıra kadar depolayabilir. Ancak tinyint , bir çalışan listesi için yeterli değildir, çünkü şirketinizde yüzlerce veya binlerce çalışan olabilir.

Veri türü Range Aralık ifadesi Storage
bigint -9,223,372,036,854,775,808 - 9,223,372,036,854,775,807 -2^63 - 2^63-1 8 bayt
int -2.147.483.648 ile 2.147.483.647 -2^31 - 2^31-1 4 bayt
smallint -32.768 - 32.767 -2^15 - 2^15-1 2 bayt
tinyint 0 - 255 2^0-1 - 2^8-1 1 bayt

Remarks

int veri türü, SQL Server'daki birincil tamsayı veri türüdür. bigint veri türü, tamsayı değerleri int veri türü tarafından desteklenen aralığı aştığında kullanılmak üzere tasarlanmıştır.

bigint , veri türü öncelik grafiğinde smallmoney ve int arasında yer alır.

İşlevler yalnızca parametre ifadesi bir bigint veri türüyse bigint döndürür. SQL Server, diğer tamsayı veri türlerini (tinyint, smallint ve int) bigint'e otomatik olarak yükseltmez.

Dönüştürme ve parametreleştirme

+, -*/, %tinyint veya bigint sabit değerlerinin float, real, decimal veya sayısal veri türlerine örtük veya açık bir şekilde dönüştürülmesi için , , , veya aritmetik işleçlerini kullandığınızda, SQL Server'ın ifade sonuçlarının veri türünü ve duyarlığı hesaplarken uyguladığı kurallar, sorgunun otomatik parametreli olup olmamasına bağlı olarak değişir.

Bu nedenle, sorgulardaki benzer ifadeler bazen farklı sonuçlar üretebilir. Bir sorgu otomatik olarak parametrelendirilmezse, sabit değer, belirtilen veri türüne dönüştürülmeden önce, duyarlılığı sabitin değerini tutacak kadar büyük olan ondalık değere dönüştürülür. Örneğin, sabit değer 1ondalık(1,0)'a dönüştürülür ve sabit değer 250ondalık(3,0)'a dönüştürülür.

Bir sorgu otomatik olarak parametrelendirildiğinde sabit değer, son veri türüne dönüştürülmeden önce her zaman ondalık (10,0) değerine dönüştürülür. / işleci söz konusu olduğunda, sonuç türünün duyarlığı benzer sorgular arasında farklılık göstermekle kalmaz, sonuç değeri de farklılık gösterebilir. Örneğin, ifadesini SELECT CAST (1.0 / 7 AS float)içeren otomatik parametreleştirilmiş sorgunun sonuç değeri, otomatik parametreli sorgunun sonuçları ondalık (10,0) veri türüne sığacak şekilde kesildiğinden, otomatik parametrelendirilmeyen aynı sorgunun sonuç değerinden farklıdır.

Tinyint veri türü Microsoft Fabric'te desteklenmez.

Tamsayı verilerini dönüştürme

Tamsayılar örtük olarak bir karakter veri türüne dönüştürüldüğünde, tamsayı karakter alanına sığamayacak kadar büyükse, SQL Server ASCII karakter 42'yi (yıldız işareti)* kullanır.

2.147.483.647'den büyük tamsayı sabitleri bigint veri türüne değil ondalık veri türüne dönüştürülür. Aşağıdaki örnekte eşik değeri aşıldığında sonucun veri türünün int'tenondalık değere değiştiği gösterilmektedir.

SELECT 2147483647 / 2 AS Result1,
       2147483649 / 2 AS Result2;

Sonuç kümesi aşağıdadır.

Result1      Result2
-----------  ------------------
1073741823   1073741824.500000

Examples

Aşağıdaki örnek bigint, int, smallint ve tinyint veri türlerini kullanarak bir tablo oluşturur. Değerler her sütuna eklenir ve deyiminde SELECT döndürülür.

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;

Sonuç kümesi aşağıdadır.

MyBigIntColumn       MyIntColumn MySmallIntColumn MyTinyIntColumn
-------------------- ----------- ---------------- ---------------
9223372036854775807  2147483647  32767            255