您的位置:首页 > 数据库 > Oracle

Sql Server和oracle下外链接的语法比较

2007-07-25 17:50 330 查看
sql server下的*= 不等价与Oracle下的(+)

create table t_test1(
col1 varchar(10),
col2 varchar(10),
col3 varchar(10))
go

insert into t_test1 values('1','a','11')
insert into t_test1 values('2','b','22')
insert into t_test1 values('3','c','33')
go

create table t_test2(
col4 varchar(10),
col5 varchar(10),
col6 varchar(10))
go

insert into t_test2 values('1','a','aa')
insert into t_test2 values('2','b','bb')
insert into t_test2 values('4','d','dd')
go

以下两句是等价的
Sql Server下:
select * from t_test1,t_test2 where col1 *= col4
Oracle下:
select * from t_test1,t_test2 where col1 = col4(+)

以下两句是不等价的
Sql Server下:
select * from t_test1,t_test2 where col1 *= col4 and col4 = '4'
Oracle下:
select * from t_test1,t_test2 where col1 = col4(+) and col4 = '4'

但是以下这句是等价的(因为是sql-92语法)
select * from t_test1 left outer join t_test2 on col1 = col4
where col5 = 'b'

造成这种情况的原因是,SQL Server对*=的解释发生了歧义.在说明文件中,SQL Server表示此语法有可能造成歧义,建议使用SQL-92标准语法,并提示将在以后可能会放弃该语法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: