我尝试在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)
我用数字测试它并且它运行良好但是当我使用字符串时它不起作用,因为值必须在引号中' '.
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)
尝试这个:
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)