RODBC 在 SQL 服务器中将浮点数作为字符拉取
RODBC pulling float as character in SQL Server
我进行了大量搜索并阅读了软件包文档,但找不到解决方案。
我正在使用针对 Microsoft SQL 服务器的 RODBC 1.3-12,详细信息如下。
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"
我不确定如何给出一个可重现的例子,因为你需要一个数据库,但下面是与我正在使用的类似的代码。
myConnection<- odbcDriverConnect(connection = "Driver={SQL Server};server=myServerName;database=myDBName;trusted_connection=yes")
myDataFrame <- sqlQuery(myConnection, "select top 100 * from myTable", as.is=TRUE)
根据文档,正如我所期望的那样,双精度返回为数字,但浮点数和金钱返回为字符。
有人知道解决这个问题的方法吗?
看起来是 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"
我进行了大量搜索并阅读了软件包文档,但找不到解决方案。
我正在使用针对 Microsoft SQL 服务器的 RODBC 1.3-12,详细信息如下。
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"
我不确定如何给出一个可重现的例子,因为你需要一个数据库,但下面是与我正在使用的类似的代码。
myConnection<- odbcDriverConnect(connection = "Driver={SQL Server};server=myServerName;database=myDBName;trusted_connection=yes")
myDataFrame <- sqlQuery(myConnection, "select top 100 * from myTable", as.is=TRUE)
根据文档,正如我所期望的那样,双精度返回为数字,但浮点数和金钱返回为字符。
有人知道解决这个问题的方法吗?
看起来是 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"