RODBC将float作为SQL Server中的字符

Joh*_*arr 3 sql-server r rodbc

我已经搜索了很多并阅读了包文档,但无法找到解决方案.

我使用RODBC 1.3-12对抗Microsoft SQL Server,具体如下.

DBMS_Name       "Microsoft SQL Server"    
DBMS_Ver        "10.50.6220"           
Driver_ODBC_Ver "03.52"            
Driver_Name     "SQLSRV32.DLL"             
Driver_Ver      "06.01.7601"         
ODBC_Ver        "03.80.0000"  
Run Code Online (Sandbox Code Playgroud)

我不确定如何给出一个可重现的例子,因为你需要一个DB,但下面的代码类似于我正在使用的代码.

myConnection<- odbcDriverConnect(connection = "Driver={SQL Server};server=myServerName;database=myDBName;trusted_connection=yes")

myDataFrame <- sqlQuery(myConnection, "select top 100 * from myTable", as.is=TRUE)
Run Code Online (Sandbox Code Playgroud)

按照文档的说法,双打将以数字的形式返回,正如我所期望的那样,但浮动和金钱作为角色回归.

有人知道这种方法吗?

nru*_*ell 6

看起来这个as.is参数导致了这个问题(不完全确定原因;我从来没有设置过这个参数):

R> str(sqlQuery(tcon, qry))
'data.frame':   1 obs. of  4 variables:
 $ DecimalCol: num 9.5
 $ VarcharCol: chr "some text"
 $ FloatCol  : num 8.55
 $ MoneyCol  : num 100
##
R> str(sqlQuery(tcon, qry, as.is = TRUE))
'data.frame':   1 obs. of  4 variables:
 $ DecimalCol: chr "9.50"
 $ VarcharCol: chr "some text"
 $ FloatCol  : chr "8.5540000000000003"
 $ MoneyCol  : chr "99.9500"
Run Code Online (Sandbox Code Playgroud)

  • 哇谢谢你.我想我开始使用它一段时间来修复一个特定的问题(或者只是试图修复一个问题),然后它不断考虑到我的新代码. (2认同)