DB는 오라클입니다.
찾아보다가 아찌님 작성하신 글중에 아래처럼 하라는 내용이 있는데
select regexp_substr('a,b,c','[^,]+' , 1 , level ) cd
from dual connect by level <= regexp_count('a,b,c',',') + 1
-------------------------------------------------------------------
SELECT * FROM TEST A
WHERE A.EMP_NO IN ( select regexp_substr(P_AAAAA,'[^,]+' , 1 , level ) cd
from dual connect by level <= regexp_count(P_AAAAA,',') + 1 )
이 문법을 사용하면 데이터는 정상적으로 나옵니다.
인덱스일때만 사용하라는 이야기가 있던데 혹시 해당 함수가 시간을 많이 잡아먹나요?
감사합니다!!
컴머로 구분한 하나의 긴 문자열입니다.
여러개의 값으로 인식하는게 아니라 하나의 값으로 인식합니다.
다음 3가지 정도의 대안이 있겠네요.
1. 쪼개어 조건을 주는 방법 : http://gurubee.net/article/55635
2. 문자 비교로 풀이하는 방법 : INSTR(p_aaaaa, ''''||a.emp_no||'''') > 0
3. 동적 쿼리를 이용하는 방법 : http://gurubee.net/article/19612