int、bigint、smallint 和 tinyint (Transact

您所在的位置:网站首页 salcalcint int、bigint、smallint 和 tinyint (Transact

int、bigint、smallint 和 tinyint (Transact

#int、bigint、smallint 和 tinyint (Transact| 来源: 网络整理| 查看: 265

int、bigint、smallint 和 tinyint (Transact-SQL) 發行項 01/25/2023

適用于:SQL ServerAzure SQL資料庫Azure SQL 受控執行個體Azure Synapse Analytics AnalyticsPlatform System (PDW)

使用整數資料的 Exact-number 資料類型。 若要節省資料庫中的空間,請使用能夠包含所有可能值的最小資料類型。 例如,若要儲存一個人的年齡,tinyint 便已足夠,因為沒有人的年齡會超過 255 歲。 但 tinyint 在用於建築物的屋齡上便可能不足,因為建築物的屋齡可超過 255 年。

資料類型 範圍 範圍運算式 儲存體 bigint -9,223,372,036,854,775,808 至 9,223,372,036,854,775,807 -2^63 至 2^63-1 8 個位元組 int -2,147,483,648 至 2,147,483,647 -2^31 至 2^31-1 4 個位元組 smallint -32,768 至 32,767 -2^15 至 2^15-1 2 位元組 tinyint 0 至 255 2^0-1 到 2^8-1 1 位元組 備註

int資料類型是 SQL Server 中的主要整數資料類型。 bigint 資料類型通常是在整數值可能超過 int 資料類型所支援的範圍時使用。

bigint 位於資料類型優先順序圖表中 smallmoney 和 int 之間。

僅當參數運算式的資料類型是 bigint 時,函式才會傳回 bigint。 SQL Server不會自動將其他整數資料類型升級為Bigint, (Tinyint、Smallint和int) 。

警告

當您使用 +、-、*、/或 % 算術運算子來執行int、Smallint、Tinyint或Bigint常數值的隱含或明確轉換時,浮點數、實數、十進位或數值資料類型 SQL Server的規則會在計算運算式結果的資料類型和精確度時套用,視查詢是否自動參數化而定。

因此,查詢中類似的運算式,有時候也會產生不同的結果。 如果查詢不是自動參數化,則常數值會先轉換為 numeric (其有效位數只是剛好可以容納常數值) 之後,再轉換為指定的資料類型。 例如,常數值 1 會轉換成 numeric (1, 0) ,常數值 250 則會轉換成 numeric (3, 0) 。

當查詢經過自動參數化時,常數值一律會先轉換為 numeric (10, 0) ,再轉換為最終資料類型。 如果有用到 / 運算子,則不僅類似查詢的結果類型有效位數不同,結果值也可能不一樣。 例如,包含運算式 SELECT CAST (1.0 / 7 AS float) 的自動參數化查詢結果值,與非自動化參數之相同查詢的結果值不同,因為自動化參數的查詢結果,會配合 numeric (10, 0) 資料類型而被截斷。

轉換整數資料

當整數隱含轉換成字元資料類型時,如果整數太大而無法放入字元欄位,SQL Server輸入 ASCII 字元 42,星號 (*) 。

大於 2,147,483,647 的整數常數會轉換成 decimal 資料類型,而不是 bigint 資料類型。 下列範例顯示當超出臨界值時,結果的資料類型會從 int 變更為 decimal。

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

以下為結果集。

Result1 Result2 1073741823 1073741824.500000 範例

下列範例會使用 bigint、int、smallint,和 tinyint 資料類型建立資料表。 值插入每個資料行,並在 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;

以下為結果集。

MyBigIntColumn MyIntColumn MySmallIntColumn MyTinyIntColumn -------------------- ----------- ---------------- --------------- 9223372036854775807 2147483647 32767 255 (1 row(s) affected) 另請參閱

ALTER TABLE (Transact-SQL) CAST 和 CONVERT (Transact-SQL) CREATE TABLE (Transact-SQL) DECLARE @local_variable (Transact-SQL) SET @local_variable (Transact-SQL) sys.types (Transact-SQL)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3