SQL中bigint类型 为什么存进去的是负数?
我使用sqlserver,想存储数据:106594712998这个数但是存在里面看到是正确的,但是我的程序登录有我在去看这个数据就变成了负数了:-779469402请问一...
我使用sqlserver,想存储数据:106594712998这个数 但是存在里面看到是正确的 ,但是我的程序登录有 我在去看这个数据就变成了负数了:-779469402请问一下这是为什么呢?还有比bigint容量更大的是数字的数据类型么?我程序取的时候使用result.getInt();取值,不行改变程序。
展开
3个回答
2013-06-07
展开全部
不是数据类型的问题,bigint存储从-2^63 (-9223372036854775808)到2^63-1(9223372036854775807) 范围内的数字。存储大小为 8 个字节。但是在你取值的时候,因为数据类型是bigint的,程序会自动把你数据转换成int类型,你的数据106594712998的范围超出int的最大范围,所以程序会自动截取,最后出现-779469402。所以在获取值的时候应该改为:result.getLong()取值。
2013-06-07
展开全部
这是msdn抄来的数据范围,bigint足够存了,只不过你取值的时候使用getInt溢出了,32位int存不下这个数。解决方法可以使用【生如夏花】所说的办法,用result.getLong()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字),存储大小为 8 个字节。
在支持整数值的地方支持 bigint 数据类型,但是,bigint 用于某些特殊的情况,当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。
在 SQL Server 中,int 数据类型是主要的整数数据类型。
在数据类型优先次序表中,bigint 位于 smallmoney 和 int 之间。
只有当参数表达式是 bigint 数据类型时,函数才返回 bigint,SQL Server 不会自动将其它整数数据类型(tinyint、smallint 和 int)提升为 bigint。
在支持整数值的地方支持 bigint 数据类型,但是,bigint 用于某些特殊的情况,当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。
在 SQL Server 中,int 数据类型是主要的整数数据类型。
在数据类型优先次序表中,bigint 位于 smallmoney 和 int 之间。
只有当参数表达式是 bigint 数据类型时,函数才返回 bigint,SQL Server 不会自动将其它整数数据类型(tinyint、smallint 和 int)提升为 bigint。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询