마농님 좀 도와 주세요 ㅠ 0 6 3,497

by 손님 [PL/SQL] FOR LOOP XMLAGG XMLELEMENT [2012.03.06 21:02:37]


마농님 도움을 몇번 받아서 마농님께 질문 좀 드립니다 ㅠ
어제도 질문을 올렸는데, 그리고 답변을 받았고, 알려 주신대로 했는데, 안되서요.


펑션을 하나 만들려 하는데요, for 문 문법을 몰라서요.
내용은 아래와 같습니다.




tbl1
column1
01,02,03,

tbl1 에  column1 에 값이 위와 같이 있습니다.

tbl_common
val1     text1
01       사과
02       배
03       딸기

위의 공통 테이블에는 위와 같이 값이 있습니다.

이때, " 01,02,03, " 값을 "사과,배,딸기" 라는 값으로 반환하고 싶습니다.

"," 을 잘라서 for 문을 돌리면 되는데, 문법을 하나도 모르겠어요 ㅠㅠ


마농님 좀 부탁 드립니다 (__)
by 부쉬맨 [2012.03.06 21:33:17]
마농님은아니지만...
그냥
for문을할필요도없고
function은 만드시는방법은아시는지?
만드시는방법을 안다고 치고

펑션이름은 aaa라고 칩니다.

select decode('01','사과','02','배','03','딸기') into 반환값
from tbl_common;

return(반환값);

select aaa(substr(column1,1,2)),aaa(substr(column1,4,5)),aaa(substr(column1,7,8))
from tabl1




by 마농 [2012.03.07 00:34:32]
1. 꼭 펑셩이어야 하나요? 그냥 SQL 은 안되나요?
2. 코드는 자리수 고정인가요?
   2자리 3자리 뒤죽박죽 일수 있나요?
3. 코드리스는 항상 순서대로인가요?
   순서가 다른 경우 [02,01,03] 인경우 [배,사과,딸기]로 나와야 하나요?
      아무 순서로 나와도 되나요?
4. 코드가 많은가요?
   몇개 안되면 그냥 Decode 로 하드코딩해도 됩니다.
4. 오라클 버전은 어떻게 되나요?

by 손님 [2012.03.07 09:18:37]
마농님// 답변 입니다.

1. 꼭 펑셩이어야 하나요? 그냥 SQL 은 안되나요?
=> 그냥 sql 이여도 됩니다.
2. 코드는 자리수 고정인가요?
   2자리 3자리 뒤죽박죽 일수 있나요?
=> 고정으로 2자리 입니다. 하지만, 길이는 다를수 있습니다.
예) "01,02,03" 일수도 있고요, "01,03,04,07,09" 일수도 있고요.
3. 코드리스는 항상 순서대로인가요?
   순서가 다른 경우 [02,01,03] 인경우 [배,사과,딸기]로 나와야 하나요?
      아무 순서로 나와도 되나요?
=> 아무순서로 나와도 상관 없습니다.
4. 코드가 많은가요?
   몇개 안되면 그냥 Decode 로 하드코딩해도 됩니다.
=> 제가 예시는 3개를 들었지만, 실제 코드가 40개정도 됩니다.
5. 오라클 버전은 어떻게 되나요?
=> 오라클 9i

부탁 드립니다 (__)

by 손님 [2012.03.07 09:36:11]
부쉬맨님,, 공통테이블의 VAL1 값은 변경 가능성이 있기 때문에요.
현재는, 사과가 01 이지만, 09가 될수도 있다는 얘기죠.

by 마농 [2012.03.07 10:17:16]
WITH tbl_common(val1, text1) AS
(
SELECT '01', '사과' FROM dual
UNION ALL SELECT '02', '배'  FROM dual
UNION ALL SELECT '03', '딸기' FROM dual
)
, tbl(column1) AS
(
SELECT '01,02,03' FROM dual
UNION ALL SELECT '01,03' column1 FROM dual
)
SELECT column1
     , (SELECT SUBSTR(XMLAGG(XMLELEMENT(x, ',', text1)).EXTRACT('//text()'), 2)
          FROM tbl_common
         WHERE a.column1 LIKE '%'||val1||'%'
        ) text2
  FROM tbl a
;

by 손님 [2012.03.07 11:40:29]
마농님 잘 되네요. ^^;
저러한게 있네요 ㅎㅎ
감사드립니다 (__)
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입