콤마(,)가 있는 데이터 where절에 in 사용해서 조회하기 0 10 3,400

by 불만제롬 [SQL Query] [2013.06.11 13:42:37]



select * from table1
 where field1 in (select field2 from table2)

filed2 값 :  A, B, C

간단하게 아래와 같은 sql로 인식할 수 없나요?

select * from table1
 where field1 in ('A', 'B', 'C')



답변 부탁해요~
by 아발란체 [2013.06.11 13:46:41]

아래처럼 하시는 것도 인식 되는데요~ !


by 아린 [2013.06.11 13:49:13]
WITH t1(c1) AS(
SELECT 'A' FROM dual UNION ALL
SELECT 'B' FROM dual UNION ALL
SELECT 'C' FROM dual UNION ALL
SELECT 'D' FROM dual UNION ALL
SELECT 'E' FROM dual
), t2(c2) AS(
SELECT 'A,B,C' FROM dual
)
SELECT *
  FROM t1
 WHERE c1 IN (SELECT REGEXP_SUBSTR(c2, '[^,]+', 1, lv) val
                FROM t2, (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 10)
               WHERE lv <= LENGTH(c2) - LENGTH(REPLACE(c2,',')) + 1
              )  

by 우리집아찌 [2013.06.11 13:49:35]

혹시 'A,B,C' 이런걸 말하시는건가요?

by 마농 [2013.06.11 13:59:09]
-- 구분자(', ')를 앞뒤로 붙인 후 LIKE 검색
SELECT *
  FROM table1 t1
 WHERE EXISTS (SELECT * FROM table2 WHERE ', '||t2.field2||', ' LIKE '%, '||t1.field1||', %')
;
SELECT t1.*
  FROM table1 t1
     , table2 t2
 WHERE ', '||t2.field2||', ' LIKE '%, '||t1.field1||', %'
;
-- 만약 t1.field1 이 고정 자리수라면 구분자 붙일 필요 없음
 WHERE t2.field2 LIKE '%'||t1.field1||'%'

by 불만제롬 [2013.06.11 14:11:42]
아. 제가 덧글 다는 사이 답변 달아주셨네요.

6~9행 sql 일단 잘 되네요.

2~4행도 한번 해봐야겠네요.

감사감사합니다. ^^

by 불만제롬 [2013.06.11 14:16:25]
'%, '||t1.field1||', %')

=> '%'||t1.field1||'%')

요렇게 하니 잘 되네요.. ^^

by 마농 [2013.06.11 14:21:01]
그냥 무작정 이래저래 바꿔보고 된다고 하시면 안되구요.
쿼리의 원리를 이해하시고 고치시길 바래요.
구분자가 컴마(',')인지? 컴마공백인지(', ')?
컬럼값이 고정자리수인지? 가변자리수인지?
원하는 결과테이블의 모양새가 어떻게 되는지?
등등에 따라 조금씩 차이가 있습니다.
아린님의 답변도 참고하셔야 할것 같구요.

by 불만제롬 [2013.06.11 15:11:22]

하. 충고 깊이 새겨 듣겠습니다.
질문에 대한 답변도 감사하지만 조언?충고? 또한 정말 감사합니다.
결과에 급급해서 짜집기식으로만 만들어 온 제 자신이 부끄럽네요.
이래선 발전이 없는데 말이죠.
다시 한번 생각하게끔 해주신 충고 정말 감사합니다.


by 불만제롬 [2013.06.11 14:06:16]

굉장히 빠르고 정성있는 답변 감사합니다.

근데 제가 설명을 잘 못 했나봐요..;;

TABLE1
filed1
A
C
B
A

TABLE2
filed2
A
A,C
B,C
A,B,C


SELECT * FROM TABLE1 A, TABLE2 B
 WHERE A.field1 in B.field2

를 구현하고 싶은겁니다.

제대로 전달이 됐는지 모르겠네요.

다시 한번 부탁드립니다.

by 마농 [2013.06.11 14:08:46]
결과 테이블도 올려 주세요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입