Simple question, but cannot find the answer.
Instead of:
Df <- sqlQuery(ch, \"SELECT * FROM tblTest WHERE Id=25\")
I want a more
We can use paste:
Df <- sqlQuery(ch, paste("SELECT * FROM tblTest WHERE Id =", Id))
c
concatenates into a vector, paste
is for string concatenation.
Or we can use sprintf:
sprintf("SELECT * FROM tblTest WHERE Id = %s", Id)
Just want to update this with a more modern answer using dplyr/tidyverse which uses string interpolation via the str_glue
command:
str_glue("SELECT * FROM tblTest WHERE Id = {Id}")
You can put any expression you want in there. For example, if you wanted to select multiple Id's using a vector:
str_glue("SELECT * FROM tblTest WHERE Id IN ({str_c(id_vector, collapse = \",\"})")
If you have multiple or reused arguments and a query that contains % you can use something like the following:
sprintf("SELECT * FROM test WHERE id = %1$s AND name = %2$s and type like ‘%%tall%%’”, id, name)
Use glue_sql()
. Example:
Id <- 25
Df <- sqlQuery(ch, glue_sql("SELECT * FROM tblTest WHERE Id= {Id}", .con = ch))
More info here.