2016-02-25 69 views
0

我查询R中使用RODBC在SQL Server表时,WHERE子句:字符串和使用RODBC的sqlquery的

例子:

num = 2 
temp <- sqlQuery(conn, sprintf('SELECT "Time", "Temp" 
           FROM "DataTable" 
           WHERE "Week_Number" = %s 
           ORDER BY "Time"', num)) 

这工作得很好,但如果我尝试使用WHERE子句在包含字符串列,我不能让它的工作

例子:

place_name <- 'London' 
temp <- sqlQuery(conn, sprintf('SELECT "Time", "Place" 
           FROM "Data_Table" 
           WHERE "Place" = %s 
           ORDER BY "Time"', place_name)) 

我个人有T例如:

place_name <- 'London' 

place_name <- \'London\' 

place_name <- "'London'" 
place_name <- gsub("'", "''", London) 

这一切都没有奏效。我收到以下错误消息: “42000 102 [Microsoft] [用于SQL Server的ODBC驱动程序11] [SQL Server]'London'附近的语法错误。”

有什么建议吗?

+0

你试过把占位符用双引号?例如' “%S”'? – joran

+0

嗨@joran,谢谢你的建议。我确实尝试过,并且出现以下错误:[1]“42S22 207 [Microsoft] [ODBC驱动程序11 for SQL Server] [SQL Server]无效的列名称''London''。” [2]“[RODBC] ERROR:Could not SQLExecDirect'SELECT \”Time \“\ n FROM \”DataTable \“\ n WHERE \”place_name \“= \”'/ London'\“\ ORDER BY \”时间\”'” –

回答

0

如果有其他人有兴趣,我找到了解决方案。我安装了RODBCext软件包,它提供了对参数化查询的支持。我用下面的代码:

query <- 'SELECT "Time", "Place" FROM "Data_Table" WHERE "Place" = ?' 
temp <- sqlExecute(conn, query, 'London', fetch = TRUE) 

这是一个关于使用RODBCext的一些有用的信息:RODBCext

相关问题