odbc::dbGetQuery 针对 Oracle 的奇怪行为(SQL 查询是正确的!)

问题描述 投票:0回答:0

我不明白。

在 R 中,通过调用

odbc::dbGetQuery(con, query)
:

对 Oracle 运行这样的查询
SELECT
    em_id,
    status,
    CASE
        WHEN bl_id IS NOT NULL AND fl_id IS NOT NULL
        THEN CONCAT(bl_id, fl_id)
        ELSE NULL
    END AS location
FROM em;

会回来:

Error: nanodbc/nanodbc.cpp:1752: HY000:
[Oracle][ODBC][Ora]ORA-00933: SQL command not properly ended

另一方面,几乎相同的:

SELECT
    em_id,
    CASE
        WHEN bl_id IS NOT NULL AND fl_id IS NOT NULL
        THEN CONCAT(bl_id, fl_id)
        ELSE NULL
    END,
    status
FROM em;

会成功吗!?

第一次请求失败的原因是什么?

  • CASE
    块就在
    FROM
    之前,和
  • 起的名字(
    AS location
    )

只有当前面两个条件都为假时,查询才会成功...

请注意,both 查询都针对 SQL Server 数据库正确运行...

我该怎么做才能使这些正确的查询在两个数据库上都无错误地运行?

sql r oracle odbc
© www.soinside.com 2019 - 2024. All rights reserved.