просто интересно, есть ли способ передать произвольное количество параметров в предложение IN
через params
из dbGetQuery()
, например, с учетом либо
dbcon <- dbConnect(RPostgres::Postgres())
# or: dbcon <- dbConnect(RPostgreSQL::PostgreSQL())
dbExecute(dbcon, "CREATE TEMP TABLE foo AS SELECT i FROM generate_series(1, 10) x(i);")
Могу ли я сделать что-нибудь вроде:
dbGetQuery(dbcon, "SELECT * FROM foo WHERE i IN (1, 2, 3)")
, где идентификаторы представляют собой «краткий список значений», то есть обычно менее 10 целых чисел или строк.Я думал, что мог бы сделать что-то вроде:
ids <- c(1, 2, 3)
dbGetQuery(dbcon, "SELECT * FROM foo WHERE i IN $1", list(ids))
, но лучшее, что я могу сделать, это:
ids <- '{1,2,3}'
dbGetQuery(dbcon, "SELECT * FROM foo WHERE i = ANY($1)", list(ids))
, но затем генерировать ids
из набора строк несколькоподвержен ошибкам.