我正在使用R调用mySQL语句,我在语句之外定义变量,例如
foo = 23;
dbGetQuery(con, "select surname from names WHERE age = '.foo.' ;")
但是这会返回一个空集,我用Google搜索并尝试'。& foo。' “包含.foo”。 ' “&安培;。&安培; FOO。”' 和许多不同的组合,但它们都不起作用,我认为这应该是一个mysql问题而不是我遇到的R特定问题,但不确定。通常变量具有$值但不包含在R中。
答案 0 :(得分:5)
这应该有效:
foo = 23;
sqlStatement <- paste("select surname from names WHERE age =",foo,'"',sep="")
dbGetQuery(con, sqlStatement;)
答案 1 :(得分:2)
您可能希望查看此问题的答案:Can I gracefully include formatted SQL strings in an R script?。
最简单的解决方案是使用罗伯特建议的paste
命令。
答案 2 :(得分:1)
接受的答案提供了错误的建议,使您的应用程序容易受到SQL注入攻击。您应始终使用绑定变量,而不是将值直接连接到查询中。使用此答案中所述的dbGetPreparedQUery
方法:Bind variables in R DBI
答案 3 :(得分:0)
在查询结尾添加分号有时会产生问题。尝试更改您的查询:
dbGetQuery(con, "select surname from names WHERE age = '.foo.' ;")
为:
dbGetQuery(con, "select surname from names WHERE age = '.foo.'")
答案 4 :(得分:0)
AFAIK命令必须是一个字符串,所以你应该附加单个组件。不熟悉R我不能帮助你如何做到这一点。在MS-VBA中,字符串连接运算符是'&amp;'。