sql >> Databasteknik >  >> RDS >> Oracle

Hur man använder SQL-parametrar i en R-markdown SQL-bit

Kanske är detta en lösning för dig, med hjälp av glue_sql, det fungerar på min dator

https://community.rstudio .com/t/using-multiple-r-variables-in-sql-chunk/2940/13

Rmd-bitar:

library(DBI)
library(glue)
library(RSQLite)

con <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
dbWriteTable(con, "mtcars", mtcars, overwrite = TRUE)

cyl_int <- c(4L, 6L)
cyl_sql <- glue_sql("{cyl_int*}")

  SELECT * FROM mtcars
  WHERE cyl IN (?cyl_sql)
  LIMIT 3

För en datumkolumn kan du behöva formatera den korrekt enligt din databas eller använda to_date(etc, '%d%...') Här i sqlite är det enkelt med ISO-8601-datum, ett exempel:

library(DBI)
library(glue)
library(RSQLite)

con <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
mtcars$DATE_1 <- seq(from = Sys.Date() - 15, to = Sys.Date() + nrow(mtcars) -16, by = 1) %>% as.character()
dbWriteTable(con, "mtcars", mtcars, overwrite = TRUE)

cyl_int <- c(4L, 6L)
cyl_sql <- glue_sql("{cyl_int*}")

d_date_sql <- glue_sql("{Sys.Date()*}", .con = con)

Observera att du måste ange .con-parameter för teckenparametrar, som sagt här

  SELECT cyl, mpg, DATE_1 FROM mtcars
  WHERE DATE_1 >= ?d_date_sql
  ORDER BY DATE_1




  1. Skapa en tillfällig tabell med datum

  2. pyodbc.connect() fungerar, men inte sqlalchemy.create_engine().connect()

  3. Hämta aktuella loggade användardetaljer för tabellen jhi_persistenet_audit_event

  4. PHP Mysql PDO antal bundna variabler matchar inte antalet tokens