Dynamic “string” in R

后端 未结 4 1986
有刺的猬
有刺的猬 2020-11-28 16:27

Simple question, but cannot find the answer.

Instead of:

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

I want a more

相关标签:
4条回答
  • 2020-11-28 17:10

    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)
    
    0 讨论(0)
  • 2020-11-28 17:16

    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 = \",\"})")
    
    0 讨论(0)
  • 2020-11-28 17:24

    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)
    
    0 讨论(0)
  • 2020-11-28 17:28

    Use glue_sql(). Example:

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

    More info here.

    0 讨论(0)
提交回复
热议问题