In R given a string like “fld1,fld2” how can I get something like “b.fld1=v.fld1 and b.fld2=v.fld2” for a SQL query. The string may have up to 10 distinct elements. This is for trying to build a join on the fly. b and v are the aliases for two tables. There willo only be two tables.
Advertisement
Answer
String interpolation with stringr::str_glue
is a convenient way of achieving this:
x
library(stringr)
sql_join <- function(columns, table1, table2) {
columns_vec <- str_split(columns, ",")[[1]]
str_glue("{table1}.{columns_vec} = {table2}.{columns_vec}") %>%
str_c(collapse = " AND ")
}
sql_join("fld1,fld2", "b", "v")
#> [1] "b.fld1 = v.fld1 AND b.fld2 = v.fld2"
sql_join("fld1,fld2,fld3,fld4", "foo", "bar")
#> [1] "foo.fld1 = bar.fld1 AND foo.fld2 = bar.fld2 AND foo.fld3 = bar.fld3 AND foo.fld4 = bar.fld4"