Oracle多表聯查時,某個字段由逗號分割的字符串組成,關係是此字符串切割後,對應另一張表某個字段,如何實現一條sql完成查詢?

此需要類似於在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,獲取兩表的查詢結果

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章