Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让oracle加入SQL server?_Sql_Sql Server - Fatal编程技术网

如何让oracle加入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

将网站从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 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语法,而您不能。