如何在 Rstudio 中将 select 语句与 dbGetQuery 一起使用?

how to use select statement with dbGetQuery in Rstudio?

我已经设置了从 R 到 oracle 数据库的连接,但无法纠正此错误

library(RJDBC)
library(DBI)
library(odbc)
con <- dbConnect(odbc(), "zzz", UID="xyz" , PWD ="xyz" )
z= dbGetQuery(con,"select * from car_price_table where type= 'car' and Date %between% c('2010-01-01', Sys.date()) ")

但是我收到这个错误

错误:nanodbc/nanodbc.cpp:1655: HY000: [Oracle][ODBC][Ora]ORA-00911: 无效字符

您不能直接将 R 语法与 SQL 语法混合使用。 特别是 %between% 不是有效的 SQL 语句,因此 invalid character 错误。

您可以使用 gluepaste0SQL 代码中插入 R 值:

qry <- glue::glue("
SELECT * FROM car_price_table
WHERE type= 'car' 
AND Date BETWEEN '2010-01-01' AND '{Sys.Date()}'")

qry
SELECT * FROM car_price_table
WHERE type= 'car' 
AND Date BETWEEN '2010-01-01' AND '2021-03-22'
                 
result = dbGetQuery(con,qry)

同时使用 Date 作为字段名称可能存在风险,因为 DATE 是保留关键字。