복잡한 쿼리에서 REGEXP_LIKE를 사용하면 실행하는 데 시간이 오래 걸릴 수 있습니다. 그 대신 다른 솔루션을 제공 할 수 있습니까?WHERE 절에서 여러 값 확인 SQL 쿼리 REGEXP_LIKE Oracle 11g
는 하나 개의 쿼리에서 값의 목록을 얻을 다른 쿼리에 만 값을 사용한다 where 절
LV_TRANS_TYPES_IDS VARCHAR2(4000);
SELECT LISTAGG(TRANSACTION_TYPE_ID, '|') WITHIN GROUP(ORDER BY 1)
INTO LV_TRANS_TYPES_IDS
FROM MTL_TRANSACTION_TYPES
WHERE TRANSACTION_TYPE_NAME IN
(SELECT MEANING
FROM FND_LOOKUP_VALUES_VL
WHERE LOOKUP_TYPE = 'LOOKUPNAME');
-이 같은 여러 값을 반환합니다 2 | 38 | 45 | 60
LV_TRANS_TYPES_IDS := '^(' || LV_TRANS_TYPES_IDS || ')$';
- 할당^(2 | 38 | 45 | 60) $ 아래 쿼리에이 값을 전달
SELECT COUNT(*)
INTO LN
FROM MTL_TRANSACTION_TYPES
WHERE 1 = 1
AND REGEXP_LIKE(TRANSACTION_TYPE_ID, LV_TRANS_TYPES_IDS);
제 실행 t 그는 쿼리 출력을 사용하고 두 번째, 세 번째 쿼리 입력에 대한 그 출력을 사용합니다. 같은 (표 1에서 F1, F2를 선택한 경우 REGEXP_LIKE (TRANSACTION_TYPE_ID, LV_TRANS_TYPES_IDS) 노동 조합 모든 노동 조합의 모든 선택 F1, REGEXP_LIKE (TRANSACTION_TYPE_ID, LV_TRANS_TYPES_IDS가) 표 3에서 F2)
먼저 쿼리 출력을 받아 그 출력 초, 제 검색어 입력을 사용하여 실행한다. (REGISP_LIKE (TRANSACTION_TYPE_ID, LV_TRANS_TYPES_IDS)) 테이블 3에서 REGEXP_LIKE (TRANSACTION_TYPE_ID, LV_TRANS_TYPES_IDS)의 합집합을 모두 선택한 테이블 1의 f1, f2를 선택합니다. – Chidam