gpt4 book ai didi

java - 为什么在 "=+"子句中使用 "=*"和 "WHERE "?

转载 作者:可可西里 更新时间:2023-11-01 06:36:57 24 4
gpt4 key购买 nike

我在 java 类中遇到了与数据库连接相关的问题,我不知道为什么要在“WHERE”子句中使用这个“=+”和“=*”。

这是一个例子:

String where = null;
if (isOracleConnectionCache()) {
where = "ValidInfo.InfoCode = FolderInfo.InfoCode AND ValidInfoGroup.InfoGroup =+ ValidInfo.InfoGroup AND FolderInfo.FolderRSN = ?";
} else {
where = "ValidInfo.InfoCode = FolderInfo.InfoCode AND ValidInfoGroup.InfoGroup =* ValidInfo.InfoGroup AND FolderInfo.FolderRSN = ?";
}

谁能告诉我?

我有三个问题:

(1)“*”和“+”分别表示什么?

(2) =+=* 在 WHERE 子句中是如何工作的?

(3)两个表比较如何?

最佳答案

因此,正如其他人已经解释的那样,SQL Server 中的 =* 运算符表示外部联接。

但是,在 Oracle 中 =+ 根本不是运算符。看起来 ValidInfoGroup.InfoGroup =+ ValidInfo.InfoGroup 实际上被解析为 ValidInfoGroup.InfoGroup = (+ ValidInfo.InfoGroup),其中 + 是一元身份运算符。

由于此代码似乎是根据正在使用的数据库尝试编写外部连接,因此在 Oracle 中使用时它是不正确的 - 它实际上是在执行普通连接。在 Oracle 的自定义语法中编写此条件的正确方法是 ValidInfoGroup.InfoGroup = ValidInfo.InfoGroup (+)

使用 ANSI SQL 连接语法来指示外部连接可能会更好,我相信这将消除测试正在使用哪个数据库的需要。

感谢 Martin 和 Nicholas 对其他答案的有益评论。

关于java - 为什么在 "=+"子句中使用 "=*"和 "WHERE "?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19930527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com