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

Mah*_*344 3 sql sql-server

我在Excel中有数据

7540006
7540447
Run Code Online (Sandbox Code Playgroud)

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

7.54001e+006
7.54045e+006
Run Code Online (Sandbox Code Playgroud)

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

我尝试了以下查询进行转换

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)
Run Code Online (Sandbox Code Playgroud)

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

7540010
7540050
Run Code Online (Sandbox Code Playgroud)

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

小智 11

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

select CAST(CAST('7.54001e+006'  AS FLOAT) AS bigint)
Run Code Online (Sandbox Code Playgroud)


san*_*wat 4

所有数据都以 Unicode 形式存储string 255 (DT_WSTR)excel.

以表格形式读取excel数据Unicode。然后进行转换ssisdatabase使用。

SELECT CAST('7.54001e+006' as REAL)
Run Code Online (Sandbox Code Playgroud)

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

     SELECT * FROM [SheetName$]
Run Code Online (Sandbox Code Playgroud)