【发布时间】:2019-09-05 23:00:48
【问题描述】:
我想从 RStudio 在 MySQL 数据库中运行参数化查询。
就像有一个表,比如TEST,其中包含姓名和年龄列。我想从 TEST where age > 30 获取数据。我可以使用paste() 来构建查询,但我希望将值 30 作为参数。
所以我尝试了以下代码:
> myQ<-dbSendQuery(conn,"SELECT * FROM TEST WHERE age > ?")
> dbBind(myQ,list(30))
> dbFetch(myQ)
但是在第一行之后它给出了以下错误:
.local(conn, statement, ...) 中的错误:无法运行语句: 您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 靠近 '?'在第 1 行
谁能帮我解决这个问题?
编辑 1
我可以使用下面的代码实现这一点,但我不想要这个:
> age<-30
> myQ<-dbSendQuery(conn,paste("SELECT * FROM TEST WHERE age >",age))
> dbFetch(myQ)
有什么方法可以达到我的要求吗?
编辑 2
见下面的截图,参考去这个link
【问题讨论】:
-
见this重复
-
不,这不是重复的,请仔细阅读我的问题。在那个问题中,它适用于 SQL Server,我使用的是 MySQL。而且解决方案使用了paste(),我不要paste()。
-
sprintf("SELECT * FROM TEST WHERE age > %s", 30)?