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 ;