Oracle 和 SQL Server 选择 (+) 等效项

Posted

技术标签:

【中文标题】Oracle 和 SQL Server 选择 (+) 等效项【英文标题】:Oracle and SQL Server select (+) equivalent 【发布时间】:2012-06-15 04:49:11 【问题描述】:

在甲骨文我有:

SELECT t2.Regkood, t2.naitatel, t2.naitafaks, t3.lahtiolekuaeg, t1.*
FROM table1 t1, table2 t2, table3 t3
WHERE t1.client = t2.client AND t1.client = t3.client(+) AND t1.client = 414246

如何在 SQL Server 中获得相同的结果?

谢谢

【问题讨论】:

:使用LEFT OUTER JOIN 语法 您不应该在 Oracle 中使用 (+)。使用标准的JOIN 语法。 【参考方案1】:
SELECT t2.Regkood, 
       t2.naitatel, 
       t2.naitafaks, 
       t3.lahtiolekuaeg, 
       t1.* 
FROM   table1 t1 
       INNER JOIN table2 t2 
               ON t1.client = t2.client 
       LEFT JOIN table3 t3 
               ON t1.client = t3.client 
WHERE  t1.client = 414246 

了解连接的一些示例:

ORACLE 中的左外连接

SELECT *
FROM A, B
WHERE A.column = B.column(+)

ORACLE 中的右外连接

SELECT *
FROM A, B
WHERE A.column(+)=B.column

【讨论】:

@Romil : 只是出于兴趣,请您解释一下 + 符号在 Oracle 中代表什么? 在以前版本的oracle(我们使用+)和sql server(我们使用*)来表示左连接或右连接。 您的两个 Oracle 联接是等效的 (A LEFT JOIN B)。如果你想写A RIGHT JOIN B,你会写这样的东西:SELECT * FROM A,B WHERE A.column (+) = B.column 恐怕我的页面上看不到这样的东西:|

以上是关于Oracle 和 SQL Server 选择 (+) 等效项的主要内容,如果未能解决你的问题,请参考以下文章

SQL 在 SQL Server 和 Oracle 中返回固定数据

怎么导出Sql Server数据库表结构和数据的脚本

oracle怎样导入sqlserver数据

怎么导出Sql Server数据库表结构和数据的脚本

怎么导出Sql Server数据库表结构和数据的脚本

SQL Server,MySQL,Oracle三者的区别