데이터를 요소별로 분리해야 하는데 0 2 687

by 김재한 [SQL Query] [2016.11.30 22:18:51]


데이터가 이런식으로 들어가 있습니다.
(A3200 + B2100) * 100 / 5
이걸 다음처럼 분리해야 되는데.

(
A3200
+
B2100
)
*
100
/
5

이런식으로 각각을 따로 떼어서 분리할 수 있을까요?
정규식을 찾아봤는데 내공이 약해서 잘 되질 않네요..
고수님들의 고견을 부탁드립니다.ㅜ

by 마농 [2016.12.01 09:17:42]
WITH t AS
(
SELECT 1 pk, '(A3200 + B2100) * 100 / 5' v FROM dual
UNION ALL SELECT 2, '((A3200 - B2100) * 100)' FROM dual
)
SELECT pk, v, lv
     , REGEXP_SUBSTR(v, '[()*/+-]|[^ ()*/+-]+', 1, lv)
  FROM t
     , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 99)
 WHERE lv <= REGEXP_COUNT(v, '[()*/+-]|[^ ()*/+-]+')
 ORDER BY pk, lv
;

 


by 김재한 [2016.12.01 13:46:06]
마농님 잘해결되었습니다. 늘 고맙습니다. 수고하세요
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입