如何让oracle加入SQL server?
将网站从oracle server迁移到sql server时。我们遇到了以下类型查询。我们有几个这样的表和联接。例如,如下所示如何让oracle加入SQL server?,sql,sql-server,Sql,Sql Server,将网站从oracle server迁移到sql server时。我们遇到了以下类型查询。我们有几个这样的表和联接。例如,如下所示 Select * from Job_master J, Batch_master B where J.BUS_DATE (+)= B.BUS_DATE 。除了将所有查询转换为使用右外部联接或左外部联接之外,我们还有其他解决方案吗?您可以使用与上面类似的命令 Select * from Job_master J right outer join Batc
Select *
from Job_master J,
Batch_master B
where J.BUS_DATE (+)= B.BUS_DATE
。除了将所有查询转换为使用右外部联接或左外部联接之外,我们还有其他解决方案吗?您可以使用与上面类似的命令
Select * from Job_master J right outer join Batch_master B
on J.BUS_DATE = B.BUS_DATE
用于右外连接
Select *
from Job_master J
Right Outer Join
Batch_master B
On J.BUS_DATE = B.BUS_DATE
用于左外连接
Select *
from Job_master J
Left Outer Join
Batch_master B
On J.BUS_DATE = B.BUS_DATE
用于内部连接
Select *
from Job_master J
Inner Join
Batch_master B
On J.BUS_DATE = B.BUS_DATE
只有在使用兼容级别80(SQL 2000)时,才能编写非ANSI外部联接。 SQL Server 2008R2中的相同语法为:
select *
from dbo.Address ad, dbo.Street st
where st.Id *= ad.StreetId
(将(+)转换为*)
如果在没有兼容性级别80的数据库中运行此操作,则会收到一条很好的错误消息,说明这是不可能的:
Msg 4147,级别15,状态1,第4行查询使用非ANSI外部联接
运算符(“=”或“=”)。要运行此查询而不进行修改,
请使用将当前数据库的兼容性级别设置为80
alterdatabase的SET COMPATIBILITY\u LEVEL选项。这是强烈的
建议使用ANSI外部联接运算符重写查询(左
外部联接,右外部联接)。在SQL Server的未来版本中,
即使在中,也不支持非ANSI联接运算符
向后兼容模式
但是,虽然它可能是可行的,但并不建议使用它(它是不明确的,不推荐使用)。请阅读评论中提到的另一个问题,Jeremiah对此有一个很好的答案。在SQL Server中没有办法做到这一点,您不应该首先使用
(+)
。虽然这是因为查询被重写,但OP会问他们是否可以在SQL Server上运行Oracle join语法,而您不能。