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)如何与两个表比较?
因此,正如其他人已经解释的那样=*,SQL Server中的运算符指示外连接.
但是,Oracle =+根本不是运营商.它似乎ValidInfoGroup.InfoGroup =+ ValidInfo.InfoGroup实际上被解析为ValidInfoGroup.InfoGroup = (+ ValidInfo.InfoGroup),+一元身份运算符在哪里.
由于此代码似乎是尝试根据正在使用的数据库编写外部联接,因此在Oracle中使用时它是不正确的 - 它实际上正在进行正常连接.在Oracle的自定义语法中编写此条件的正确方法是ValidInfoGroup.InfoGroup = ValidInfo.InfoGroup (+).
使用ANSI SQL连接语法来指示外连接可能会更好,我相信这将消除测试正在使用哪个数据库的需要.
感谢Martin和Nicholas对其他答案的有益评论.
| 归档时间: |
|
| 查看次数: |
711 次 |
| 最近记录: |