-
问题
Kingbase如何兼容Oracle加号(+)连接操作符? -
文档概述
本文主要是通过调研Oracle的加号(+)操作符的功能,然后分析如何基于Kingbase实现兼容Oracle加号(+)连接操作符。 -
Oracle加号(+)操作符功能调研
Oracle中的连接类型可以分为两类:
内连接(inner join);
外连接。而外连接又分为左外连接(left join)、右外连接(right join)和全外连接(full join)。
而左右外连接除了使用left join、right join语法,外连接还可以使用加号(+)连接操作符语法。但是如果使用加号(+)连接操作符语法时,需要有一些注意事项:
(+)操作符只能出现在where子句中,并且不能与outer join语法同时使用;
当使用(+)操作符执行外连接时,如果where子句中包含有多个条件,则必须在所有条件中都包含(+)操作符;
(+)操作符只适用于列,而不能用在表达式上;
(+)操作符不能与or和in操作符一起使用;
(+)操作符只能用于实现左右外连接,而不能用于实现完全外连接。
Oracle 12c(+)操作符实例分析:
1、创建数据源
create table t1 (i int, j int) ;
insert into t1 values ( 1,2);
insert into t1 values (2,2);
insert into ti values (3,1) ;
insert into t1 values (null, null);
create table t2 as select * from t1;
与where条件混合使用==
2、简单等值连接条件
SQL> select * from t1, t2 where t1.i = t2.i(+);
I J I J
1 2 1 2
2 2 2 2
3 1 3 1
已选择4行。
3、如果有单表条件但是没有join条件,则(+)被忽略
SQL> select * from t1, t2 where t2.i(+)= 2;
I J I J
1 2 2 2
2 2 2 2
3 1 2 2
2 2
已选择4行。
SQL>select * from t1, t2 where t2.i = 2;
I J I J
1 2 2 2
2 2 2