使用 RODBC 的 sqlQuery 时的字符串和 WHERE 子句
Strings and the WHERE clause when using RODBC's sqlQuery
我正在 SQL 服务器中使用 R:
中的 RODBC 查询表
示例:
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)
None 这已经奏效了。我收到以下错误消息:
“42000 102 [Microsoft][SQL 服务器的 ODBC 驱动程序 11][SQL 服务器] 'London' 附近的语法不正确。”
有什么建议吗?
万一其他人感兴趣,我找到了解决方案。我安装了 RODBCext 包,它提供对参数化查询的支持。我使用了以下代码:
query <- 'SELECT "Time", "Place" FROM "Data_Table" WHERE "Place" = ?'
temp <- sqlExecute(conn, query, 'London', fetch = TRUE)
这里有一些关于使用 RODBCext 的有用信息:RODBCext
我正在 SQL 服务器中使用 R:
中的 RODBC 查询表示例:
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)
None 这已经奏效了。我收到以下错误消息: “42000 102 [Microsoft][SQL 服务器的 ODBC 驱动程序 11][SQL 服务器] 'London' 附近的语法不正确。”
有什么建议吗?
万一其他人感兴趣,我找到了解决方案。我安装了 RODBCext 包,它提供对参数化查询的支持。我使用了以下代码:
query <- 'SELECT "Time", "Place" FROM "Data_Table" WHERE "Place" = ?'
temp <- sqlExecute(conn, query, 'London', fetch = TRUE)
这里有一些关于使用 RODBCext 的有用信息:RODBCext