2015-01-27 2 views
2

데이터베이스가 있고 여러 열이 bit 유형입니다. RMySQL 패키지를 사용하여 쿼리 할 때 잘못된 결과가 반환됩니다. 나는 테이블을 조회하려고하면유형이 비트 인 열을 잘못 쿼리하는 RMySQL

+--------+------+ 
| aId | aBit | 
+--------+------+ 
| First |  | 
| Second | ☺ | 
| Third |  | 
| Fourth | ☺ | 
+--------+------+ 
4 rows in set (0.00 sec 

위대한, 그러나하십시오 SQL 프롬프트에서 재현하려면 :

select * from suppliers 

내가 얻을 :

CREATE TABLE suppliers 
(aId varchar(10) not null, 
    aBit bit not null 
); 

INSERT INTO suppliers (aId, aBit) VALUES ("First", 0); 
INSERT INTO suppliers (aId, aBit) VALUES ("Second", 1); 
INSERT INTO suppliers (aId, aBit) VALUES ("Third", 0); 
INSERT INTO suppliers (aID, aBit) VALUES ("Fourth", 1); 

나는 다음 실행할 수 있습니다 R 명령 프롬프트 :

library(RMySQL) 
mydb = dbConnect(MySQL(), user='root', password='password1', dbname='test', host='localhost') 
query = dbSendQuery(mydb,"select * from suppliers") 
data = fetch(query, n=-1) 
summary(data) 

내 컴퓨터에서이 제품 uces :

aId     aBit 
Length:4   Min. :0 
Class :character 1st Qu.:0 
Mode :character Median :0 
        Mean :0 
        3rd Qu.:0 
        Max. :0 

는 "데이터는"이런 일이하고 잠재적 인 작업 방법 이유를 알아 0 사람으로 설정되어있는 모든 ABIT 세포를 볼 수 있듯이? 덕분에 해결을 위해 사전

+0

이것은 dev 버전에서 수정되었지만 자세한 내용은 https://github.com/rstats-db/RMySQL/issues/20를 참조하십시오. – hadley

답변

2

, 당신은 MySQL의에서 IF 절을 사용할 수 있습니다 :

select aId,IF(aBit,'1','0') as aBit from suppliers 

이 수익에서 약간의 MySQL을 방지하고 R은 문제없이 처리 할 수있는 값을 생성한다.

+2

'SELECT aId, aBit + 0 ASbit FROM suppliers '는 조금 있습니다 더 단순한 – hadley

관련 문제