int、bigint、smallint 和 tinyint (Transact-SQL)

更新日期: 2006 年 4 月 14 日

使用整数数据的精确数字数据类型。

数据类型 范围 存储

bigint

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

8 字节

int

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

4 字节

smallint

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

2 字节

tinyint

0 到 255

1 字节

备注

int 数据类型是 SQL Server 2005 中的主要整数数据类型。bigint 数据类型用于整数值可能超过 int 数据类型支持范围的情况。

在数据类型优先次序表中,bigint 介于 smallmoneyint 之间。

只有当参数表达式为 bigint 数据类型时,函数才返回 bigint。SQL Server 不会自动将其他整数数据类型(tinyintsmallintint)提升为 bigint

ms187745.Caution(zh-cn,SQL.90).gif注意:
使用 +、-、*、/ 或 % 等算术运算符将 intsmallinttinyintbigint 常量值隐式或显式转换为 floatrealdecimalnumeric 数据类型时,SQL Server 计算数据类型和表达式结果的精度时应用的规则有所不同,这取决于查询是否是自动参数化的。 因此,查询中的类似表达式有时可能会生成不同的结果。如果查询不是自动参数化的,则将常量值转换为指定的数据类型之前,首先将其转换为 numeric,该数据类型的精度很大足以保存常量的值。例如,常量值 1 转换为 numeric (1, 0),常量值 250 转换为 numeric (3, 0)。 如果查询是自动参数化的,则将常量值转换为最终数据类型之前,始终先将其转换为 numeric (10, 0)。如果涉及 / 运算符,则对于类似查询而言,不仅结果类型的精度可能不同,而且结果值也可能不同。例如,包含表达式 SELECT CAST (1.0 / 7 AS float) 的自动参数化查询的结果值将不同于非自动参数化的同一查询的结果值,因为自动参数化查询的结果将被截断以适合 numeric (10, 0) 数据类型。有关参数化查询的详细信息,请参阅简单参数化

请参阅

参考

ALTER TABLE (Transact-SQL)
CAST 和 CONVERT (Transact-SQL)
CREATE TABLE (Transact-SQL)
数据类型 (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)
DELETE (Transact-SQL)
INSERT (Transact-SQL)
SET @local\_variable (Transact-SQL)
UPDATE (Transact-SQL)

其他资源

数据类型转换(数据库引擎)

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

版本 历史记录

2006 年 4 月 14 日

已更改的内容:
  • 将第三段注意说明更改为以“如果查询是自动参数化的...”开头。在旧版本中,该段落以“如果查询不是自动参数化的...”开头。