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

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric

Jenis data angka yang tepat yang menggunakan data bilangan bulat. Untuk menghemat ruang dalam database, gunakan tipe data terkecil yang dapat dengan andal berisi semua nilai yang mungkin. Misalnya, tinyint akan cukup untuk usia seseorang karena tidak ada yang hidup lebih dari 255 tahun. Tapi tinyint tidak akan cukup untuk usia bangunan karena bangunan bisa berusia lebih dari 255 tahun.

Jenis data Rentang Ekspresi rentang Penyimpanan
bigint -9,223,372,036,854,775,808 hingga 9,223,372,036,854,775,807 -2^63 hingga 2^63-1 8 Byte
int -2,147,483,648 hingga 2,147,483,647 -2^31 hingga 2^31-1 4 Byte
smallint -32,768 hingga 32,767 -2^15 hingga 2^15-1 2 Byte
kecil 0 hingga 255 2^0-1 hingga 2^8-1 1 Byte

Keterangan

Jenis data int adalah jenis data bilangan bulat utama di SQL Server. Jenis data bigint dimaksudkan untuk digunakan ketika nilai bilangan bulat mungkin melebihi rentang yang didukung oleh jenis data int .

bigint cocok antara smallmoney dan int dalam bagan prioritas jenis data.

Fungsi mengembalikan bigint hanya jika ekspresi parameter adalah jenis data bigint . SQL Server tidak secara otomatis mempromosikan jenis data bilangan bulat lainnya (tinyint, smallint, dan int) ke bigint.

Perhatian

Saat Anda menggunakan operator aritmatika +, -, *, /, atau % untuk melakukan konversi implisit atau eksplisit nilai konstanta int, smallint, tinyint, atau bigint ke jenis data float, real, desimal, atau numerik, aturan yang diterapkan SQL Server saat menghitung jenis data dan presisi hasil ekspresi berbeda tergantung pada apakah kueri diparameter otomatis atau tidak.

Oleh karena itu, ekspresi serupa dalam kueri terkadang dapat menghasilkan hasil yang berbeda. Ketika kueri tidak diparameterkan otomatis, nilai konstanta terlebih dahulu dikonversi ke numerik, yang presisinya hanya cukup besar untuk menahan nilai konstanta, sebelum mengonversi ke jenis data yang ditentukan. Misalnya, nilai konstanta 1 dikonversi ke numerik (1, 0), dan nilai konstanta 250 dikonversi ke numerik (3, 0).

Saat kueri diparameterkan otomatis, nilai konstanta selalu dikonversi ke numerik (10, 0) sebelum dikonversi ke tipe data akhir. Ketika operator / terlibat, tidak hanya presisi jenis hasil yang berbeda di antara kueri serupa, tetapi nilai hasilnya juga dapat berbeda. Misalnya, nilai hasil kueri berparameter otomatis yang menyertakan ekspresi SELECT CAST (1.0 / 7 AS float), berbeda dari nilai hasil kueri yang sama yang tidak diparameterkan otomatis, karena hasil kueri yang diparameterisasi otomatis, dipotong agar pas dengan tipe data numerik (10, 0).

Jenis data tinyint tidak didukung di Microsoft Fabric.

Mengonversi data bilangan bulat

Ketika bilangan bulat dikonversi secara implisit ke jenis data karakter, jika bilangan bulat terlalu besar agar pas dengan bidang karakter, SQL Server memasukkan karakter ASCII 42, tanda bintang (*).

Konstanta bilangan bulat yang lebih besar dari 2.147.483.647 dikonversi ke jenis data desimal , bukan jenis data bigint . Contoh berikut menunjukkan bahwa ketika nilai ambang terlampaui, jenis data hasil berubah dari int menjadi desimal.

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

Berikut adalah hasil yang ditetapkan.

Result1      Result2  
1073741823   1073741824.500000  

Contoh

Contoh berikut membuat tabel menggunakan jenis data bigint, int, smallint, dan tinyint . Nilai disisipkan ke dalam setiap kolom dan dikembalikan dalam pernyataan SELECT.

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;  

Berikut adalah hasil yang ditetapkan.

MyBigIntColumn       MyIntColumn MySmallIntColumn MyTinyIntColumn  
-------------------- ----------- ---------------- ---------------  
9223372036854775807  2147483647  32767            255  
  
(1 row(s) affected)  

Baca juga

ALTER TABLE (Transact-SQL)
CAST dan CONVERT (Transact-SQL)
BUAT TABEL (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
SET @local_variable (Transact-SQL)
sys.type (Transact-SQL)