Oracle转SQL Server时Oracle(+)操作符的等效替代方案是什么
Oracle 外连接(+)操作符在SQL Server中的等效用法
Oracle 特有的(+)是老式外连接语法,字段后带(+)的表为匹配附表,另一侧的表为需要保留全部行的主表。你给出的示例中,T2表的关联字段全部带(+),代表保留T1表的全部行,只匹配T2表中满足关联条件的行,属于左外连接逻辑。
原Oracle示例SQL:
select X.A, X.B FROM T1 X, T2 Y WHERE X.A = Y.A(+) AND X.B = Y.B(+)
SQL Server 不支持(+)语法,需要使用ANSI标准的JOIN写法实现完全等效的逻辑,改写后语句如下:
SELECT X.A, X.B FROM T1 X LEFT OUTER JOIN T2 Y ON X.A = Y.A AND X.B = Y.B
额外注意事项:
- 如果是
WHERE X.A(+) = Y.A这类写法,代表T1是附表、T2是主表,对应SQL Server的RIGHT OUTER JOIN - 推荐所有场景都使用ANSI标准的JOIN写法,相比老式逗号分隔表的语法可读性更强,也能避免意外产生笛卡尔积的问题
内容的提问来源于stack exchange,提问作者Ana
相关产品推荐
相关产品推荐

