NVL 함수
- 결괏값이 NULL이 아닌 다른 값을 얻고자 할 때 NVL함수를 사용한다.
NULL 값의 대상이 숫자 유형 데이터인 경우는 주로 0(ZERO)으로 값을 설정하고,
NVL(숫자, 0)
문자 유형 데이터인 경우는 블랭크보다는 'X' OR 'NULL'과 같이 시스템에서 의미 없는 문자로 변경한다.
NVL(표현식 1, 표현식 2) - 표현식 1의 결괏값이 NULL이면 표현식 2의 값을 출력한다. 단 표현식1과 표현식2의 결과 데이터 값이 동일해야 한다.
NULLIF(표현식 1, 표현식 2) - 표현식 1이 표현식 2와 같으면 NULL을 같지 않으면 표현식 1을 리턴한다.
COALESCE(표현식 1......) - 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다. 모두 NULL이면 NULL리턴
공집합
SELECT 1 FROM DUAL WHERE 1=2; 와 같은 조건이 대표적인 공집합을 발생시키는 쿼리이며, 이 쿼리는 조건에 맞는 데이터가 하나도 없다. 이러한 데이터가 한 건도 없는 경우를 공집합이라고 하고, NULL 데이터와는 또 다르게 이해해야 한다.
공집합을 NVL함수로 처리하려는 실수는 자주 발생된다. 인수의 값이 공집합인 경우네는 NVL함수를 사용해도 공집합이 출력된다.
이때 적절한 집계 함수를 사용하면 빈칸이 NULL로 치환되기도 한다. 집계함수 & Scalar Subquery의 경우는 인수의 결괏값이 공집합인 경우에도 null을 출력한다.
CASE표현도 사용할 수가 있다.
ANSI/ISO SQL 표준에는 CASE EXPRESSION이라고 표현되어 있으며, 함수와 같은 성격을 가진다. 대구 ORACLE사의 Decode 함수와 같은 기능을 한다.
DECODE(표현식, 기준값 1, 값 1 [, 기준값 2, 값 2.... 디폴트 값])
- 표현식의 값이 기준값 1이면 값 1을 출력하고 기준값 2면 값 2를 출력하고 아무것도 해당되지 않으면 디폴트 값을 출력한다.
CASE문
- CASE SIMPLE_CASE EXPRESSION
EX) CASE COLUMN/표현식 WHEN 'X' THEN 'Y' ELSE 'Z' END
- CASE SEARCHED_CASE EXPRESSION
CASE WHEN CONDITION THEN RETURN_EXPR ELSE 표현식 END과 같은 형식
EX) CASE WHEN SAL > 3000 THEN 'HIGH' WHEN SAL <= 3000 'LOW' ELSE 'BYE' END
'Database' 카테고리의 다른 글
ORDER BY JOIN DESC (0) | 2021.04.28 |
---|---|
집계 함수 (Aggregate Function) (0) | 2021.04.27 |
내장 함수(BUILT-IN-FUNCTION) - 날짜형/변환형 (0) | 2021.04.27 |
내장 함수(BUILT-IN-FUNCTION) - 숫자형 (0) | 2021.04.27 |
내장 함수(BUILT-IN-FUNCTION) - 문자형 (0) | 2021.04.27 |
댓글