将科学记数法转换回SQL Server中的数字

时间:2016-05-27 15:14:55

标签: sql sql-server

我在Excel中有数据,如

7540006
7540447

但是当我将数据导入SQL Server时,它将保存为

7.54001e+006
7.54045e+006

所以现在当我尝试将其转换回原始状态时,它并没有以正确的值结束。

我尝试了以下转换

的查询
declare @a varchar(40)
set @a = '7.54001e+006'

declare @b decimal(27, 12)

SELECT @b = CONVERT(REAL, @a, 2)

SELECT LTRIM(RTRIM(str(@a))), LTRIM(STR(@a))

SELECT CAST('7.54001e+006' as REAL)

和我得到的输出是所有方法的原始值的3加法 即

7540010
7540050

如何将其转换回原始状态??

3 个答案:

答案 0 :(得分:7)

尝试以下查询,该查询给出了确切的值

select CAST(CAST('7.54001e+006'  AS FLOAT) AS bigint)

答案 1 :(得分:1)

所有数据都存储为excel中的Unicode字符串255(DT_WSTR)。

以Unicode格式读取Excel数据。然后使用./ / p>在ssis或数据库中进行转换

选择CAST(' 7.54001e + 006'为真)

在Excel数据源中>>连接管理器>>数据访问模式   == QUERY

     SELECT * FROM [SheetName$]

答案 2 :(得分:0)

当您将其保存到数据库中时,会将值转换为toString(),例如

Convert.toString(7540006)

然后它将原始值保存在数据库中。