Oracle和SQL Server的select (+)等价语句

5
在 Oracle 中,我有以下内容:
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中获得相同的结果?

谢谢


1
使用 LEFT OUTER JOIN 语法。 - Gaurav Soni
5
在Oracle中,不应使用 (+) 符号,而应使用标准的 JOIN 语法。 - user330315
2个回答

8
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中的LEFT OUTER JOIN

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

RIGHT OUTER JOIN IN ORACLE

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

@Romil:仅出于兴趣,您能否解释一下在Oracle中+符号代表什么? - praveen
在以前的 Oracle 版本中(我们使用 +)和 SQL Server(我们使用 *)来表示左连接或右连接。 - Romil Kumar Jain
1
你的两个 Oracle 连接是等价的 (A LEFT JOIN B)。如果你想写 A RIGHT JOIN B,你可以这样写:SELECT * FROM A,B WHERE A.column (+) = B.column - Vincent Malgrat
恐怕我在我的页面上看不到这样的东西 :| - babboon

0

实际上,对我来说这个问题看起来像是一个连接问题,在Oracle中使用两个并排的管道符号表示:

Oracle:select FirstName||' '||LastName 返回结果:John Doe(如果FirstName = John且LastName = Doe)

与此相同的是

MSSQL:select FirstName+' '+LastName 返回结果:John Doe(如果FirstName = John且LastName = Doe)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接