likeCoin



SQL 함수 정리

널체크 함수 여러가지

SELECT NVL(NULL, 'X')
   FROM DUAL
;

SELECT NVL2(NULL, 'A', NULL)
   FROM DUAL
;

SELECT NULLIF('A','X')
   FROM DUAL
;

/* 우선순위 A B C중 널 값 아닌것을 출력함. */
SELECT COALESCE('X', NULL, 'AB')
  FROM DUAL
;

DECODE문이 간단하면 사용하기 편하지만? 그냥 간결함? ㅋ
요즘 어느 프로젝트를 가더라도 DECODE는 코드의 가독성 때문에 환영받지 못하는거 같다.

대부분 걷어 내고 CASE문으로 대체를 하고 있는데,
간혹가다 위의 NVL, NVL2 등의 함수로 대체가능한 DECODE 구문을 주저리 주저리
써놓은 경우가 있어 같이 정리를 해본다.

예를들어
DECODE(A.COL1,NULL,'X-MAN',NULL) 이란 쿼리문장은
한 눈에 잘안들어 오지만,

케이스 문으로 바꾸면
CASE A.COL1
         WHEN NULL THEN 'X-MAN'
                                ELSE NULL
END     AS XMAN
한눈에 아 머하는 거다 라는 게 눈에 들어 온다.
하지만, 위는 널체크 하는 것으로

NVL2(A.COL1, NULL, 'X-MAN') 으로 간결하면서도
이해가 쉬운 NVL2함수로 변경할수 있겠다.

위와같은 경우가 자주 발생하니 오라클에서도 NVL함수 뿐만 아니라 NVL2라는 함수도 만들지 않았을까? ㅋ

 


https://button.like.co/cargotmon



 


+ Recent posts