SQL中bigint类型 为什么存进去的是负数?

发布网友 发布时间:2022-03-24 23:33

我来回答

3个回答

热心网友 时间:2022-03-25 01:03

不是数据类型的问题,bigint存储从-2^63 (-9223372036854775808)到2^63-1(9223372036854775807) 范围内的数字。存储大小为 8 个字节。但是在你取值的时候,因为数据类型是bigint的,程序会自动把你数据转换成int类型,你的数据106594712998的范围超出int的最大范围,所以程序会自动截取,最后出现-779469402。所以在获取值的时候应该改为:result.getLong()取值。

热心网友 时间:2022-03-25 02:21

这是msdn抄来的数据范围,bigint足够存了,只不过你取值的时候使用getInt溢出了,32位int存不下这个数。解决方法可以使用【生如夏花】所说的办法,用result.getLong()

热心网友 时间:2022-03-25 03:55

  从 -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。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com