분리한 문자, 숫자값 합치기 가능할까요? 6

by 스나이퍼 [2014.10.06 10:12:02]


아래 각 나온 결과값을 합쳐서 다시 결과값을 가져오고 싶습니다.

예제의 TEST1,TEST2,TEST3,TEST4, 1^2^3^4 는 임의의 값이며 구분자(, ^) 가 여러개 들어가 있는 상태입니다.

 '[^^]+', 1, 1) 이 될수도 있고  '[^^]+', 1, 10 이 될수 도 있고...

저장되는 값은 랜덤입니다.

위의 예제는 각 결과 문자를 합친 값, 아래 예제는 각 결과 숫자 합친 값과 각 결과 숫자의 계산값을 구하고자 합니다.

부탁드립니다.

select
       REGEXP_SUBSTR('TEST1,TEST2,TEST3,TEST4', '[^,]+'),
       REGEXP_SUBSTR('TEST1,TEST2,TEST3,TEST4', '[^,]+', 1, 1),
       REGEXP_SUBSTR('TEST1,TEST2,TEST3,TEST4', '[^,]+', 1, 2),
       REGEXP_SUBSTR('TEST1,TEST2,TEST3,TEST4', '[^,]+', 1, 3),
       REGEXP_SUBSTR('TEST1,TEST2,TEST3,TEST4', '[^,]+', 1, 4)
from dual

결과입니다 : TEST1, TEST1, TEST2, TEST3, TEST4

제가 원하는 결과 형식 : TEST1TEST2TEST3TEST4

select
       REGEXP_SUBSTR('1^2^3^4', '[^^]++') v_00,
       REGEXP_SUBSTR('1^2^3^4', '[^^]+', 1, 1) v_1,
       REGEXP_SUBSTR('1^2^3^4', '[^^]+', 1, 2) v_2,
       REGEXP_SUBSTR('1^2^3^4', '[^^]+', 1, 3) v_3,
       REGEXP_SUBSTR('1^2^3^4', '[^^]+', 1, 4) v_4
from dual

결과입니다 : 1,1,2,3,4

제가 원하는 결과 형식 : 아래 2가지입니다.

각 결과 숫자 합친 값 : 1234

각 결과 숫자의 계산값 : 10

 v_1, v_2 .... 등의 값을 변수로 받을려고 하는데 이런것도 가능할런지 문의드립니다.

부탁드립니다^^

 

by 필상 [2014.10.06 10:55:42]

도움이 될까싶어 적어 봅니다.

SELECT TO_NUMBER(DBMS_XMLGEN.GETXMLTYPE('SELECT ' || A || ' FROM DUAL').EXTRACT('//text()')) AS TOT
  FROM ( SELECT REPLACE('1^2^3^4', '^', '+') A FROM DUAL );


by 스나이퍼 [2014.10.06 15:22:28]

감사합니다.^^

DBMS_XMLGEN.GETXMLTYPE 에 관해 또하나 배우게 되네요.

앞으로도 많은 조언 부탁드립니다.^^


by DarkBee [2014.10.06 10:59:43]
select
       REPLACE ( '1^2^3^4', '^', '' )
     , TO_NUMBER ( dbms_xmlgen.getxmltype ( 'SELECT ' || REPLACE ( '1^2^3^4', '^', '+' ) || ' a FROM DUAL' ).extract('//text()') )
from dual

v_1등의 변수는 동적 Sql로 만드셔야 합니다.

 


by 스나이퍼 [2014.10.06 15:22:39]

감사합니다.^^

DBMS_XMLGEN.GETXMLTYPE 에 관해 또하나 배우게 되네요.

앞으로도 많은 조언 부탁드립니다.^^


by 마농 [2014.10.06 11:35:02]
SELECT v
     , REPLACE(v, '^') r1
     , SUM(REGEXP_SUBSTR(v, '[^^]+', 1, LEVEL)) r2
  FROM (SELECT '1^2^3^4' v FROM dual)
 CONNECT BY LEVEL <= LENGTH(v) - LENGTH(REPLACE(v, '^')) + 1
 GROUP BY v
;

 


by 스나이퍼 [2014.10.06 15:23:37]

감사합니다.^^

CONNECT BY LEVEL 이 구문은 처음 보다보니 좀더 공부가 필요한것 같습니다.ㅠ

앞으로도 많은 조언 부탁드립니다.^^

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