DBMS/Oracle

[Oracle] NVL 존재하지 않는 데이터 0으로 출력하기

박혜웅 2017. 11. 13. 22:23

NVL 존재하지 않는 데이터 0으로 출력하기


혼자 프로젝트를 하다가 데이터가 존재하지 않을 경우 0

존재할 경우 그 값에 1을 더한값을 입력하고 싶었습니다. 


그래서 생각한게 NVL함수인데 NVL함수는 데이터가 존재할 때 사용할 수 있습니다.


그러면 테이블에 데이터가 아예 존재하지 않을때 NVL함수를 사용하려면 어떻게 해야할까요?



 답은 간단합니다. 컬럼명 앞에 그룹함수를 씌워주면 됩니다.



 아래 쿼리문은 제 프로젝트의 댓글을 입력하는 쿼리문입니다.


파란색으로 칠한 부분처럼 그룹함수를 씌워주면 데이터가 없을때에도


NVL함수가 null로 인식해서 0을 반환하게 됩니다.



INSERT INTO re_deal_comment

(com_no, com_sep, com_content, deal_no, com_author, com_rdate,com_group)    

VALUES

(SEQ_RE_DEAL_COMMENT.nextval,0,#{com_content},#{deal_no},#{s_nick}, to_char(sysdate, 'yyyy-mm-dd/AM hh:mi:ss')

,(select decode(NVL(max(com_group),0),0,1,max(com_group)+1) from re_deal_comment where deal_no = #{deal_no}))