如何在SQL语句中使用变量名?

时间:2010-02-02 06:56:01

标签: mysql r variables

我正在使用R调用mySQL语句,我在语句之外定义变量,例如

foo = 23;
dbGetQuery(con, "select surname from names WHERE age = '.foo.' ;")

但是这会返回一个空集,我用Google搜索并尝试'。& foo。' “包含.foo”。 ' “&安培;。&安培; FOO。”'  和许多不同的组合,但它们都不起作用,我认为这应该是一个mysql问题而不是我遇到的R特定问题,但不确定。通常变量具有$值但不包含在R中。

5 个答案:

答案 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;'。