replace 와 in 의 조합? 0 1 1,136

by 김유식 [SQL Query] [2013.08.26 22:06:43]


안녕하세요..
쿼리를 짜다가 혹시 가능한가 해서 질문드립니다...
어떤 컬럼값이 '@' 구분자로 되어있는 테이블이 있는데..
(예: 영수@철수@영희@수희)

@ 구분자로 되어있는것을 , 형태로 바꿔서
IN 을 사용하기위해 '영수','철수','영희' 이런 형태로 바꿔보았습니다.
그랬더니 작동을 안하네요..

SELECT T1.*
  FROM SCHOOL T1
WHERE T1.student IN (SELECT '''' || REPLACE(student,'@',',')  || ''''
                                 FROM SCHOOL)

원래 이런식으론 동적쿼리를 사용 못하는건가요? 무조건 코딩하거나
MyBatis 함수 써야되는건지..궁굼합니다.
by 우리집아찌 [2013.08.27 08:48:16]
WITH T1 ( c1 , c2 ) AS (
WITH T1 ( c1 , c2 ) AS (
SELECT '영수' , '사람' FROM DUAL UNION ALL
SELECT '철수' , '사람' FROM DUAL UNION ALL
SELECT '영희' , '사람' FROM DUAL UNION ALL
SELECT '아찌' , '개' FROM DUAL UNION ALL
SELECT '치맥' , '닭' FROM DUAL )
, T2 ( c1 ) AS (
SELECT '영수@철수@영희' FROM DUAL )

SELECT * FROM
      T1 a ,
     (SELECT REGEXP_SUBSTR(c1,'[^@]+',1,lv) c1
      FROM  T2 , (SELECT LEVEL lv FROM DUAL CONNECT BY LEVEL <= 10 ) T3
      WHERE T3.lv <= LENGTH(T2.c1) - LENGTH(REPLACE(T2.c1,'@')) + 1 ) b
WHERE a.c1 = b.c1
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입