在R脚本中传递字符串变量以在SQL语句中使用它

lin*_*nux 5 sql variables r

我尝试在R脚本中使用字符串变量来通过SQL语句使用例如:

x="PASS"

SQL<- paste("select ID, NAME, STATUS from STUDENT where STATUS =(",x,")",sep="")
Q1 <- dbGetQuery(con, SQL)
Run Code Online (Sandbox Code Playgroud)

错误说:

mysqlExecStatement(conn,statement,...)出错:
RS-DBI驱动程序:(无法运行语句:'where子句'中的未知列'PASS')

这意味着STATUS =(",x,")"= PASS,它必须'通过'添加引号''

我试图把''但不成功,如下所示.

SQL <- paste("select ID, NAME, STATUS from STUDENT where STATUS ='(",x,")' ",sep="")
Q1 <- dbGetQuery(con, SQL)
Run Code Online (Sandbox Code Playgroud)

我用数字测试它并且它运行良好但是当我使用字符串时它不起作用,因为值必须在引号中' '.

dic*_*koa 8

sprintf改为使用:

x <- "PASS"
sprintf("select ID, NAME, STATUS from STUDENT where STATUS = '%s'", x)

## [1] "select ID, NAME, STATUS from STUDENT where STATUS = 'PASS'"
Run Code Online (Sandbox Code Playgroud)


G. *_*eck 5

尝试这个:

library(gsubfn)
x <- "PASS"

fn$dbGetQuery(con, "select ID, NAME, STATUS from STUDENT where STATUS = '$x' ")
Run Code Online (Sandbox Code Playgroud)

这也适用:

s <- fn$identity("select ID, NAME, STATUS from STUDENT where STATUS = '$x' ")
dbGetQuery(con, s)
Run Code Online (Sandbox Code Playgroud)