2015-10-22 2 views
3

Я искал довольно много и читал документацию пакета, но не могу найти решение для этого.RODBC потянув float как символ в SQL Server

Я использую 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" 

Я не знаю, как дать воспроизводимое пример, так как вы должны были бы БД, но ниже код похож на то, что я использую.

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

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

За документацию, двойники возвращаются как числовые, так как я ожидал, но плавать и деньги возвращаются в качестве символа.

Кто-нибудь знает об этом?

+0

Cast их 'DECIMAL' в своем выражении SQL, или бросить их в' числовое значение внутри R? – nrussell

+0

@nrussell Спасибо, но мне часто приходится исследовать таблицы, где угодно от 30-180 колонок. Когда я просто подтягиваю стол, чтобы осмотреться, я не хочу указывать все столбцы. –

ответ

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" 
+2

Ничего себе, спасибо. Я думаю, что я начал использовать это некоторое время, чтобы исправить конкретную проблему (или, может быть, просто попытался исправить проблему), а затем продолжал переноситься в мой новый код, даже не задумываясь об этом. –

Смежные вопросы