콤마(,) 가 있는 데이터 in절에 사용 0 2 5,929

by 김민희 [SQL Query] oracle [2018.05.30 20:51:06]


제가 데이터를 만약에 'A,B,C' 이렇게 받았는데 쿼리를 where in () 안에다

'A', 'B', 'C' <- 이렇게 주고 싶은데 방법을 모르겟어요..ㅜㅜ 고수님들 도움좀 부탁드릴게요

by 마농 [2018.05.31 08:11:56]
-- 문자열 그대로를 IN 절에 넣으면 원하시는 결과가 나오질 않습니다.
 WHERE col IN (:v)    -- (X)
-- split 서브쿼리를 만들어 IN 절에 넣는 방법
 WHERE col IN (SELECT REGEXP_SUBSTR(v, '[^,]+', 1, LEVEL) v
                 FROM (SELECT :v v FROM dual)
                CONNECT BY LEVEL <= REGEXP_COUNT(v, '[^,]+') 
               )
-- INSTR, LIKE 비교하는 방법(고정자리수 값인 경우 : A,B,C)
 WHERE INSTR(:v, col) > 0
 WHERE :v LIKE '%'||col||'%'
-- INSTR, LIKE 비교하는 방법(가변자리수 값인 경우 : A,AA,AAA)
 WHERE INSTR(','||:v||',', ','||col||',') > 0
 WHERE ','||:v||',' LIKE '%,'||col||',%'
-- 동적 쿼리를 이용하는 방법
 v_where := ' WHERE col IN (''' || REPLACE(:v, ',', ''',''') || ''')';

 


by 김민희 [2018.05.31 09:19:27]

감사합니다!!!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입