4

简单的问题,但找不到答案。

代替:

Df <- sqlQuery(ch, "SELECT * FROM tblTest WHERE Id=25")

我想要一段更动态的代码。就像是:

Id <- 25
Df <- sqlQuery(ch, c("SELECT * FROM tblTest WHERE Id=", Id))

但这是不正确的。

4

4 回答 4

8

我们可以使用粘贴:

Df <- sqlQuery(ch, paste("SELECT * FROM tblTest WHERE Id =", Id))

c连接成一个向量,paste用于字符串连接。

或者我们可以使用 sprintf:

sprintf("SELECT * FROM tblTest WHERE Id = %s", Id)
于 2010-08-05T16:35:12.970 回答
1

使用glue_sql(). 例子:

Id <- 25

Df <- sqlQuery(ch, glue_sql("SELECT * FROM tblTest WHERE Id= {Id}", .con = ch))

更多信息在这里

于 2020-09-13T20:18:36.013 回答
0

如果您有多个或重复使用的参数和包含 % 的查询,则可以使用以下内容:

sprintf("SELECT * FROM test WHERE id = %1$s AND name = %2$s and type like ‘%%tall%%’”, id, name)
于 2018-04-19T18:29:21.510 回答
0

只想使用 dplyr/tidyverse 使用更现代的答案来更新它,它通过str_glue命令使用字符串插值:

str_glue("SELECT * FROM tblTest WHERE Id = {Id}")

你可以在里面放任何你想要的表达式。例如,如果您想使用向量选择多个 Id:

str_glue("SELECT * FROM tblTest WHERE Id IN ({str_c(id_vector, collapse = \",\"})")
于 2019-10-18T01:50:27.097 回答