문자열 count 질문.. 0 2 1,009

by tester0101 [Oracle 기초] [2016.07.22 14:45:55]


안녕하세요.
값의 갯수를 구하는 질문입니다.

'00, 01, 02' 
위와 같이 하나의 문자열이라면,

select (REGEXP_COUNT('00,01,02',',')+1) as count from dual;


이런식으로 구하면 될 것 같은데..

'00', '01', '02'
이렇게 하나의 문자열이 아닌 문자들에 대한 갯수는 어떻게 구해야 하나요? 

by 마농 [2016.07.22 15:17:08]
WITH t AS
(
SELECT '' c1, '' c2, '' c3 FROM dual
UNION ALL SELECT '00', '', '' FROM dual
UNION ALL SELECT '00', '01', '' FROM dual
UNION ALL SELECT '00', '01', '02' FROM dual
)
SELECT c1, c2, c3
     , NVL2(c1, 1, 0)
     + NVL2(c2, 1, 0)
     + NVL2(c3, 1, 0) AS cnt1
     , NVL(LENGTH(c1||c2||c3)/2, 0) cnt2 -- 고정길이(2)라면 다음과 같은 방법도 가능
     , DECODE('', c1, 0, c2, 1, c3, 2, 3) cnt3 -- 앞에서부터 차례대로 채워진다면 다음 방법도 가능
  FROM t
;

 


by tester0101 [2016.07.25 09:33:30]

마농님 감사합니다. ^^

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