【问题标题】:ORA 00936 error while using left outer join + syntax使用左外连接 + 语法时出现 ORA 00936 错误
【发布时间】:2011-06-25 04:26:10
【问题描述】:

我有两张桌子:T1 和 T2

  • T1 有一个 DATE 列:CT1
  • T2 有一个 DATE 列:CT2

我想用连接条件左外连接 T1 和 T2:

trunc(CT1,'Mi')=trunc(CT2,'Mi')(+)

当我尝试运行此 SQL 时,我收到错误 ORA 00936:missing expression。

知道这里有什么问题吗?

【问题讨论】:

  • 基本上我的问题是(+)运算符可以应用于任意表达式...如果可以,如何?

标签: sql oracle left-join ora-00936


【解决方案1】:

我认为您需要将(+) 运算符紧跟在它适用的列名之后。

trunc(CT1,'Mi')=trunc(CT2 (+),'Mi')

“(+) 运算符只能应用于列,不能应用于任意表达式。但是,任意表达式可以包含一个或多个标有 (+) 运算符的列。” (来自http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/queries006.htm

无论如何,我建议使用 ANSI 语法。它更清晰、更实用、更便携。

【讨论】:

  • +1 获取操作方法。我同意将 (+) 运算符隐藏在函数引用中的可读性不高;-)
【解决方案2】:

尝试使用 ANSI 语法:

T1 LEFT OUTER JOIN T2 ON TRUNC(CT1,'Mi')=TRUNC(CT2,'Mi')

(+) 外连接语法有一些限制,这可能是其中之一。当然,如果您更改此连接,则必须全部更改 - 您不能将两者混合使用。

【讨论】:

    猜你喜欢
    • 2022-06-14
    • 2020-05-05
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多