R的查询结果错误

时间:2011-04-30 21:35:39

标签: r odbc

在我的32位Windows(Vista)笔记本电脑上,我需要R在另一台计算机上(通过互联网)在64位Windows(Server 2008)上查询MS SQL Server 2008数据库。

如果我在笔记本电脑上使用SQL Server Studio连接到数据库并发送此查询:

SELECT * from mytable where id = 1111111111111110032

我得到了答复 id,.....
1111111111111110032,.....

这是正确的。我得到了我要求的记录。

但如果我在R中写这个:

library(RODBC)  
My_conn <- odbcConnect("myODBC_connection", uid="abc123", pwd="abc123")  
tbl_Calls <- sqlQuery(My_conn, "SELECT * from mytable where id = 1111111111111110032")  

我得到了答复 id,.....
1111111111111110128,.....

换句话说,我得到的记录比我要求的还要多(一个以... 128而不是...... 032结尾)。我知道查询本身不是问题,因为它可以在SQL Studio中使用。

我不知道可能出现什么问题。 32位对64位是一个问题吗?在我的ODBC连接中,我使用“SQL Server”(6.00.6002.18005)。

这可能不是R问题,但我不知道从哪里开始......也许是因为id是19个数字?

/克里斯

1 个答案:

答案 0 :(得分:0)

我发现了问题,并且是一个“脏”的解决方案。问题不在于问题,而是在id-field的错误响应中。即问题和收到的记录是正确的,除了我正在使用的很长的领域。

为了他人的利益,这是解决方案。

tbl_Calls_2 <- sqlQuery(My_conn, "SELECT id, LEFT(id,10) as LeftId, RIGHT(id,9) as RightId from mytable where id = 1111111111111110032")
attach(tbl_Calls_2)
tbl_Calls_2$CorrectId <- paste(LeftId,RightId,sep="")
detach(tbl_Calls_2)

如果有人知道更好的解决方案,我会很感激。

/克里斯