SQL字符串将我的数字限制为3位数

SQL字符串将我的数字限制为3位数,sql,sql-server,Sql,Sql Server,我有这样一个sql字符串: set @sql1 = 'select @DClose = DClose FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',''Excel 12.0;Database=' + @filePath1 + '' + ';' + '''' + ',''Select * from [Sheet1$]'''+')' 数据来自一个csv文件,我每天都会下载该文件,并附上市场价格。 价格如下所示: Date Price 7

我有这样一个sql字符串:

set @sql1 = 'select @DClose = DClose FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',''Excel 12.0;Database=' + @filePath1 + '' + ';' + '''' + ',''Select * from [Sheet1$]'''+')' 
数据来自一个csv文件,我每天都会下载该文件,并附上市场价格。 价格如下所示:

Date         Price
7/31/2014    123.765625
使用以下命令转换变量时:

set @Price = cast(@DClose as numeric(20,10))
我只得到这个:

123.7660000000 
而不是

123.765625
有没有办法得到完整的数字

下面是一个干净的代码:

 DECLARE @filePath1 NVARCHAR(MAX)
  DECLARE @sql1 NVARCHAR(MAX)
  DECLARE @sym1 NVARCHAR(10)
  DECLARE @DDate date
  DECLARE @DClose NVARCHAR(35)
  DECLARE @WhereClause NVARCHAR(MAX) 
  DECLARE @Price  NUMERIC(20,10)

  SET @DDate = '08-01-2014' 

  SET @sym1 = 'excelFileName'
  SET @filePath1 = 'somefilepath\'

  SET @WhereClause = ' WHERE DDate =' + CHAR(39) + CONVERT(NVARCHAR(25), @DDate, 126) + CHAR(39)

  SET @sql1 = 'SELECT @DClose = DClose FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',''Excel 12.0;Database=' + @filePath1 + '' + ';' + '''' + ',''SELECT * FROM [Sheet1$]'''+')' 
  SET @sql1 = @sql1 + @WhereClause

  EXECUTE SP_EXECUTESQL @sql1, N'@DClose NVARCHAR(35) OUTPUT' , @DClose OUTPUT

  SET @Price = CAST(@DClose AS NUMERIC(20,10)) 

Excel认为存储123.765625的单元格/列是什么数据类型?如果不强制转换,@DClose是什么?@DClose声明了什么类型?
@Price
是从
@DClose
设置的,所以您需要先跟踪
@DClose
,然后担心
@Price
。我们看不到如何在问题更正中的代码片段中建立
@DClose
。数据每天都存储为.xls文件,而不是csv文件。DClose是一个包含收盘价的列。每个文件都有一个DDate列和一个DClose列。如果我用Excel打开文件,我会看到所有数字