在我的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个数字?
/克里斯
答案 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)
如果有人知道更好的解决方案,我会很感激。
/克里斯