使用RODBC的sqlQuery时的字符串和WHERE子句

时间:2016-02-25 18:06:45

标签: sql-server r rodbc

我在R:

中使用RODBC查询SQL Server中的表

示例:

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))

我尝试过各种各样的事情,例如:

place_name <- 'London'

place_name <- \'London\'

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

这些都没有奏效。我收到以下错误消息: &#34; 42000 102 [Microsoft] [SQL Server的ODBC驱动程序11] [SQL Server]伦敦附近的语法错误&#39;。&#34;

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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

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

以下是有关使用RODBCext的一些很好的信息:RODBCext