NVL(인수1, 인수2) (Oracle 함수)
인수1이 NULL이면 인수2
인수1이 NULL이 아니면 인수1 리턴
SELECT NVL(컬럼명, '값'), NVL(컬럼명, NULL)
FROM 테이블명;
-- 결과
-- 컬럼 값 / '값'
-- 컬럼 값 / NULL
ISNULL(인수1, 인수2)
인수1이 NULL이면 인수2
인수1이 NULL이 아니면 인수1 리턴
SELECT ISNULL(컬럼명), ISNULL(변수), ISNULL(CASE WHEN 조건 THEN 값 END)
FROM 테이블명;
-- 결과
-- TRUE/FALSE
-- TRUE/FALSE
-- TRUE/FALSE
NULLIF(인수1, 인수2)
인수1과 인수2가 같으면 NULL
인수1과 인수2가 같지 않으면 인수1 리턴
SELECT NULLIF(컬럼명, '값'), NULLIF(컬럼명, NULL)
FROM 테이블명;
-- 결과
-- NULL / 컬럼 값
-- NULL / NULL
COALESCE(인수1, 인수2, 인수3, ...)
NULL이 아닌 최초의 인수 리턴
SELECT COALESCE(컬럼1, 컬럼2, '값'), COALESCE(컬럼1, NULL, '값')
FROM 테이블명;
-- 결과
-- 컬럼1 값 / 컬럼2 값 / '값'
-- 컬럼1 값 / NULL / '값'
NVL2(인수1, 인수2, 인수3)
인수1이 NULL이 아니면 인수2 리턴
인수1이 NULL이면 인수3 리턴
SELECT NVL2(컬럼명, '값1', '값2'), NVL2(컬럼명, NULL, '값')
FROM 테이블명;
-- 결과
-- 컬럼 값 / '값1' / '값2'
-- 컬럼 값 / NULL / '값'
CASE
복잡한 조건에 따라 다양한 결과를 반환할 때 유용하다.
SELECT CASE 컬럼명 WHEN '값1' THEN '결과1' WHEN '값2' THEN '결과2' ELSE '기본값' END
FROM 테이블명;
-- 결과
-- 결과1 / 결과2 / 기본값
별도의 ELSE가 없을 경우에는 NULL값이 DEFAULT 값이 된다.
DECODE (Oracle)
SELECT DECODE(컬럼명, '값1', '결과1', '값2', '결과2', '기본값')
FROM 테이블명;
-- 결과
-- 결과1 / 결과2 / 기본값
인수의 개수가 짝수일 때 마지막 값이 DEFAULT 값이 된다.
'Developer Diary > SQL' 카테고리의 다른 글
[SQL] 제약조건 - NOT NULL, UNIQUE, PK, FK, CHECK (0) | 2024.03.08 |
---|---|
[SQL] 윈도우함수 (1) | 2024.03.07 |
[SQL] DML, DDL, DCL, TCL (1) | 2024.03.05 |
[SpartaCodingClub] 엑셀보다 쉬운 SQL - Group by (0) | 2022.08.10 |
[SpartaCodingClub] 엑셀보다 쉬운 SQL - Select, Where (0) | 2022.05.31 |