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

7 java mysql sql database oracle

我在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 = ?";
}
Run Code Online (Sandbox Code Playgroud)

有人能告诉我吗?

我有三个问题:

(1)"*"和"+"符号表示什么?

(2)如何做这些=+与=*工作在WHERE子句中?

(3)如何与两个表比较?

Dav*_*sta 6

因此,正如其他人已经解释的那样=*,SQL Server中的运算符指示外连接.

但是,Oracle =+根本不是运营商.它似乎ValidInfoGroup.InfoGroup =+ ValidInfo.InfoGroup实际上被解析为ValidInfoGroup.InfoGroup = (+ ValidInfo.InfoGroup),+一元身份运算符在哪里.

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

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

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