此需要類似於在sql中,使用in的場景,只是in是一對多,此處需要切割後的多對多。
這裏我使用了Oracle函數進行處理,取交集
CREATE OR REPLACE
FUNCTION "FUN_JUDGE_ISCONTAIN" (ids IN NVARCHAR2, out_ids IN NVARCHAR2)
return number
AS
connum NUMBER;
BEGIN
IF ids is null or out_ids is null THEN
return 0;
END IF;
select count(*) into connum from (
select regexp_substr(nme, '[^,]+', 1, rownum) nme
from (select ids nme from dual)
connect by rownum <= length(regexp_replace(nme, '[^,]+')) +1
intersect
select regexp_substr(nme, '[^,]+', 1, rownum) nme
from (select out_ids nme from dual)
connect by rownum <= length(regexp_replace(nme, '[^,]+')) +1);
return connum;
END;
ids和out_ids爲兩表對應的字段,通過取交集並判斷是否返回0,獲取兩表的查詢結果