코딩항해기
[DBMS/Oracle] Null 관련 함수 (NULLIF, COALESCE) 본문
NULL
아직 정의되지 않은 값으로 0 또는 공백과 다르다. (0은 숫자이고, 공백은 문자다)
테이블을 생성할 때 NOT NULL 또는 PRIMARY KEY로 정의되지 않으면 NULL을 포함할 수 있다.
NULL을 포함하는 연산의 결과도 NULL이다 ( 1 + NULL = NULL)
row에서 연산을 할 때 (컬럼1+컬럼2) NULL이 있다면 결과값은 NULL이 되며,
집계함수를 사용할 때 column에 NULL이 있다면 해당 NULL을 무시하고 집계한다.
NULL과의 비교는 무조건 false가 반환된다. (IS NULL, IS NOT NULL을 사용해야 비교가 가능하다)
NULLIF(표현식1, 표현식2)
표현식1이 표현식2와 같으면 NULL을, 같지 않으면 표현식1을 리턴한다.
특정 값을 NULL로 변경해야 할 때 유용하게 사용할 수 있다.
-- NULLIF (표현식1, 표현식2) : 표현식1 과 2과 같으면 NULL, 다르면 표현식 1 리턴
-- MGR 7698 이면 NULL로 표시한다.
SELECT ENAME, EMPNO, MGR, NULLIF(MGR, 7698) NUIF
FORM EMP ;
COALESCE(표현식1, 표현식2, ...)
임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다.
모든 표현식이 NULL이라면 NULL을 리턴한다.
사원 테이블에서 커미션, 급여를 표기하되, 두 컬럼 모두 NULL 이면 NULL을 표기하는 예시이다.
-- COALESCE (표현식1, 표현식2)
SELECT ENAME, COALESCE(COMM, SAL) COAL
FROM EMP ;
'DBMS > Oracle' 카테고리의 다른 글
[DBMS/Oracle] USER 계정 생성 (cmd) (0) | 2024.08.26 |
---|---|
[DBMS/Oracle] 다차원 집계함수 (CUBE, ROLLUP, GROUPING SETS) (0) | 2024.08.24 |
[DBMS/Oracle] SQL 실행 순서 (조건 위치 효율성) (0) | 2024.08.21 |
[DBMS/Oracle] VIEW (0) | 2024.08.04 |
[DBMS/Oracle] 집합 연산자 (0) | 2024.08.03 |