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>