我正在使用“SQL Server 2008 R2”。我有一个名为TimeSpent varchar(250)
列的表。我在其中存储了一些正整数值。我正在使用cast(TimeSpent as BigInt)
将数据插入此表。插入后的一些数据转换为十进制,并带有'e +'一些值。例如1.27923e + 006,1.30313e + 006。
请建议我使用哪种数据类型解决此问题。
答案 0 :(得分:2)
它存储为1.27923e + 006,因为
您的CAST与此无关
示例:
DECLARE @foo TABLE (Id int, Wrong varchar (250), Correct bigint);
DECLARE @bignumber bigint = 12345678901234567;
DECLARE @bignumber2 float = 12345678901234567;
DECLARE @bignumber3 varchar(250) = '12345678901234567';
SELECT @bignumber;
INSERT @foo VALUES (1, @bignumber, @bignumber);
INSERT @foo VALUES (2, @bignumber2, @bignumber2);
INSERT @foo VALUES (3, CAST(@bignumber2 AS bigint), CAST(@bignumber2 AS bigint));
INSERT @foo VALUES (4, @bignumber3, @bignumber3);
INSERT @foo VALUES (5, CAST(@bignumber3 AS bigint), CAST(@bignumber3 AS bigint));
SELECT * FROM @foo;
E符号仅在您将浮点数插入varchar(情况3)的情况下出现 作为额外的奖励,浮动只捕获15个有效数字,因此您将失去精确度。对于像1000000000123456789
这样的数字,情况更糟