我正在使用“SQL Server 2008 R2”。我有一个表,其中有一列 Name TimeSpent varchar(250)
。我在其中存储了一些正整数值。我正在使用cast(TimeSpent as BigInt)
将数据插入此表。插入后的一些数据被转换为十进制,并带有“e+”一些值。例如 1.27923e+006,1.30313e+006。
请建议我使用什么数据类型来解决此问题。
我正在使用“SQL Server 2008 R2”。我有一个表,其中有一列 Name TimeSpent varchar(250)
。我在其中存储了一些正整数值。我正在使用cast(TimeSpent as BigInt)
将数据插入此表。插入后的一些数据被转换为十进制,并带有“e+”一些值。例如 1.27923e+006,1.30313e+006。
请建议我使用什么数据类型来解决此问题。
它被存储为 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;
The E notation appears only where you insert float into varchar (case 3)
As an added bonus, float only capture 15 significant figures so you'll lose precision. This is even worse with a number like 1000000000123456789