RMySQL错误地查询类型为bit的列
作者:互联网
我们有一个数据库,几个列的类型为bit.使用RMySQL软件包查询它们时,将返回不正确的结果.要重现,请在SQL提示符下:
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);
然后,我可以运行:
select * from suppliers
我得到:
+--------+------+
| aId | aBit |
+--------+------+
| First | |
| Second | ☺ |
| Third | |
| Fourth | ☺ |
+--------+------+
4 rows in set (0.00 sec
很好,但是如果我尝试在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)
在我的机器上会产生:
aId aBit
Length:4 Min. :0
Class :character 1st Qu.:0
Mode :character Median :0
Mean :0
3rd Qu.:0
Max. :0
如您所见,“数据”中的所有aBit单元均设置为0.有人知道为什么会发生这种情况以及潜在的解决方法吗?提前致谢
解决方法:
要解决此问题,可以在MySQL中使用IF子句:
select aId,IF(aBit,'1','0') as aBit from suppliers
这将防止MySQL返回一点,并应产生R可以毫无问题地处理的值.
标签:rmysql,mysql,r 来源: https://codeday.me/bug/20191028/1954600.html