【问题标题】:how to use select statement with dbGetQuery in Rstudio?如何在 Rstudio 中使用带有 dbGetQuery 的 select 语句?
【发布时间】:2021-03-22 16:34:45
【问题描述】:

我已设置从 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: 无效字符

【问题讨论】:

  • 阿米特?您看过/测试过@Waldi 的答案吗?它解决了您的问题;如果仍然存在问题,除非您将它们带回此处,否则您可能不会得到任何更改。 (如果没有,您有没有接受的原因?)

标签: sql r dbi


【解决方案1】:

您不能直接将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 是保留关键字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-17
    • 2013-07-07
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    相关资源
    最近更新 更多