IN (param1) 형태는 구문 오류는 안나겠지만 의미상으로는 틀린 조건입니다.
1. IN (param1 을 split 하여 리스트로 출력하는 Select 구문) 형태로 푸는 방안
2. IN 조건이 아닌 문자열 비교 방식으로 푸는 방안
1 2 3 4 5 6 7 8 9 10 11 12 13 | -- 1. 구분자로 분리 SELECT * FROM test WHERE code IN ( SELECT REGEXP_SUBSTR(param1, '[^|]+' , 1, LEVEL ) FROM dual CONNECT BY LEVEL <= REGEXP_COUNT(param1, '[^|]+' ) ) ; -- 2. 문자열 비교 SELECT * FROM test WHERE INSTR(param1|| '|' , '|' ||code|| '|' ) > 0 ; |