SQL Server数据类型int、bigint、smallint和tinyint范围简析
来源:互联网 发布:什么是多线程编程 编辑:程序博客网 时间:2024/05/26 07:27
环境:SQLServer 2008 R2
使用整数数据的精确数字数据类型。
bigint
从 -2^63 (-9223372036854775808) 到 2^63-1(9223372036854775807) 的整型数据
(所有数字)。存储大小为 8 个字节。
www.2cto.com
int
从 -2^31 (-2,147,483,648) 到 2^31 - 1(2,147,483,647) 的整型数据(所有数字)。
存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。
smallint
从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。
tinyint
从 0 到 255 的整型数据。存储大小为 1 字节。
注释
在支持整数值的地方支持 bigint 数据类型。但是,bigint 用于某些特殊的情况,
当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。在 SQL Server 中,
int 数据类型是主要的整数数据类型。
在数据类型优先次序表中,bigint 位于 smallmoney 和 int 之间。
只有当参数表达式是 bigint 数据类型时,函数才返回 bigint。SQL Server 不会自动
将其它整数数据类型(tinyint、smallint 和 int)提升为 bigint。
使用 +、-、*、/ 或 % 等算术运算符将 int、smallint、tinyint 或 bigint 常量值隐式
或显式转换为float、real、decimal 或 numeric 数据类型时,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。
SELECT2147483647 / 2 AS Result1, 2147483649 / 2 AS Result2 ;
下面是结果集:
Result1 Result2
1073741823 1073741824.500000
总结
数据类型的选择要根据实际情况而定,最好能满足需求。不要杀鸡用牛刀,因为对空间的浪费
会很严重,效率也会受到一定的影响。
0 0
- SQL Server 数据类型int、bigint、smallint 和 tinyint范围
- SQL Server数据类型int、bigint、smallint和tinyint范围简析
- SQL Server数据类型int、bigint、smallint和tinyint范围简析
- SQL SERVER数值类型int、bigint、smallint 和 tinyint范围
- 数据类型int、bigint、smallint 和 tinyint范围(sqlserver)
- 数据类型int、bigint、smallint 和 tinyint范围(sqlserver)
- 数据类型int、bigint、smallint 和 tinyint范围(sqlserver)
- SQLServer 数据类型int、bigint、smallint 和 tinyint范围
- int、bigint、smallint 和 tinyint范围
- int、bigint、smallint 和 tinyint范围
- int、bigint、smallint 和 tinyint范围
- int、bigint、smallint和tinyint范围
- SQL Server 中 int、bigint、smallint 和tinyint
- 转 SQL server数据库数据类型tinyint,smallint,int和bigint的区别
- SQL server数据库中数据类型tinyint,smallint,int和bigint的区别
- int、bigint、smallint 和 tinyint (Transact-SQL)
- MySQL的数据类型int、bigint、smallint 和 tinyint取值范围
- mysql的数据类型int、bigint、smallint 和 tinyint取值范围
- HBase基础知识
- ASP.NET 安全认证(一)—— 如何运用 Form 表单认证 .(转)
- container_of()宏
- devkit8000程序的烧写signGP
- Codeforces Round #FF (Div. 2) C. DZY Loves Sequences
- SQL Server数据类型int、bigint、smallint和tinyint范围简析
- test
- 23岁那年你正处在哪个状态?现在呢?
- 7.12 [NWPU][2014][TRN][4]搜索 C - 广搜 基础
- 十大基础实用算法之深度优先搜索和广度优先搜索
- 安卓开发之旅
- append与appendTo
- java处理高并发高负载类网站的优化方法
- 对Android体系结构的理解