当前位置: 代码迷 >> Oracle开发 >> 查询两个表中的字段是否有交加
  详细解决方案

查询两个表中的字段是否有交加

热度:107   发布时间:2016-04-24 06:25:18.0
查询两个表中的字段是否有交集
sqlserver和oracle下如何查询两个表中的字段是否有交集?
例如
表A                                表B
aa                                  bb
1,2,3                            2,3
11                                  11,22,13,2,3

这样表A的(1,2,3)中的2和3 与表B的(2,3)有交集,11和(11,22,13,2,3)有交集

sqlserver和oracle有什么方法可以判断呢?
------解决思路----------------------
create table a (
 name  varchar2(20)
 );
 insert into a (name)
 values ('aa');
  insert into a (name)
 values ('1,2,3'); 
 insert into a (name)
 values ('11');
 commit;

create table b (
 name  varchar2(20)
 );
 insert into b (name)
 values ('bb');
  insert into b (name)
 values ('2,3'); 
 insert into b (name)
 values ('11,22,13,2,3');
 commit;
查找交集
select a.name, b.name from a,b where  regexp_like(a.name,b.name)
union 
select a.name, b.name from a,b where  regexp_like(b.name,a.name)
------解决思路----------------------

-- sql server 
create table a(a varchar(20)) 
go
create table b(b varchar(20))
go
insert into a values('aa'),('1,2,3'),('11')
go
insert into b values('bb'),('2,3'),('11,22,13,2,3')
go
select * 
from a , b 
where a.a like '%' + b.b + '%'
or b.b like '%' + a.a + '%'
go
drop table a ,b 
go


(3 行受影响)

(3 行受影响)
a                    b
-------------------- --------------------
1,2,3                2,3
11                   11,22,13,2,3

(2 行受影响)






--oracle 
SQL> create table a(a varchar(20)) ;

表已创建。

SQL> create table b(b varchar(20)) ;

表已创建。

SQL> begin
  2  insert into a values('aa');
  3  insert into a values('1,2,3');
  4  insert into a values('11');
  5  insert into b values('bb');
  6  insert into b values('2,3');
  7  insert into b values('11,22,13,2,3');
  8  end ;
  9  /

PL/SQL 过程已成功完成。

SQL> select a.a , b.b
  2  from a ,b
  3  where a.a like '%' 
------解决思路----------------------
 b.b 
------解决思路----------------------
 '%'
  4  or b.b like '%' 
------解决思路----------------------
 a.a 
------解决思路----------------------
 '%'
  5  /

A                    B
-------------------- --------------------
1,2,3               2,3
11                   11,22,13,2,3

SQL> drop table a ;

表已删除。

SQL> drop table b ;

表已删除。

SQL>
SQL>
  相关解决方案