한 컬럼에 다중값이 있을경우 ( 다른 테이블에서 사용할 때) 문의 드려요. 0 1 8,146

by lsg1lsg2 [SQL Query] 오라클 쿼리 다중값 조인 [2012.04.01 17:27:41]



A테이블과 B테이블이 있습니다.
2개의 테이블을 사용하는 데 문의사항이 생겨서 이렇게 올려 봅니다.

A의 컬럼을 B의 컬럼을 비교하는 부분에서 B의 컬럼값이 다중값일 경우 잘 조회되지 않아서요.


예를들면 

SELECT *
   FROM A
WHERE a1 = 'test'
     AND a2 IN (select a2 from B);

여기서 B테이블의 a2컬럼의 값은 '1','2' 입니다.

저장할 때 여러가지 방법으로 저장을 해봤습니다만 잘 되지 않네요.
방법 -> ('1','2')    (1','2)    (1,2)
이렇게 3가지 방법으로 했지만 되지 않았습니다.

프로시져안에서 이렇게 처리하고있어서 화면에서 변수로 받아와서 처리할까 생각중에 글을 올립니다.

어떻게 저장해야하는지
어떤식으로 조회시켜야하는지
변수로 처리 할 경우 잘 처리 되지는 알려주세요ㅜ

여기 까지 읽어 주셔서 감사합니다.
by 마농 [2012.04.02 09:54:03]

 1. 문자열 비교 방식 : 앞뒤로 컴마를 붙여서 비교.
 -- 1) LIKE ( ',1,2,' LIKE '%,1,%' )
 WHERE ','||b.a2||',' LIKE '%,'||a.a2||',%'
 -- 2) INSTR ( INSTR(',1,2,', ',1,') )
 WHERE INSTR(','||b.a2||',', ','||a.a2||',') > 0


2. 문자열을 분리된 행 값으로 변환
SELECT REGEXP_SUBSTR(a2, '[^,]'+, 1, LEVEL) a3
  FROM (SELECT '1,2' a2 FROM dual)
 CONNECT BY LEVEL <= LENGTH(a2) - LENGTH(REPLACE(a2,',')) + 1
;

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