Oracle数据库的两个字段值为逗号分割的字符串,例如:字段A值为“1,2,3,5”,字段B为“2”。
想获取两个字段的交集(相同值)2,获取两个字段的差集(差异值)1,3,5。
一、最终实现的sql语句
1、获取交集(相同值):
select regexp_substr(id, '[^,]+', 1, rownum) id
from (select '1,2,3,5' id from dual)
connect by rownum <= length(regexp_replace(id, '[^,]+')) +1
intersect -- 取交集
select regexp_substr(id, '[^,]+', 1, rownum) id
from (select '2' id from dual)
connect by rownum <= length(regexp_replace(id, '[^,]+')) +1;
/*结果:
2
*/
2、获取差集(差异值):
select regexp_substr(id, '[^,]+', 1, rownum) id
from (select '1,2,3,5' id from dual)
connect by rownum <= length(regexp_replace(id, '[^,]+')) +1
minus --取差集
select reg