[SQL] IF, CASE, NULL, COALESCE
IF 함수
IF
함수는 조건식이 참일 때와 거짓일 때 다른 값을 반환
IF(조건식, 참일 때 값, 거짓일 때 값)
예시: 성적에 따라 합격 여부 표시하기
SELECT name,
grade,
IF(grade >= 3.0, '합격', '불합격') AS result
FROM students;
IF
함수를 사용해 성적이 3.0이상인 경우엔 ‘합격’, 아니면 ‘불합격’을 result에 출력하도록 작성
CASE문
CASE
문은 SQL에서 더 복잡한 조건일 때 사용
CASE
WHEN 조건식1 THEN 반환값1
WHEN 조건식2 THEN 반환값2
...
ELSE 기본값
END
예시: 성적에 따른 등급 표시
SELECT name,
grade,
CASE
WHEN grade >= 3.7 THEN 'A'
WHEN grade >= 3.3 THEN 'B'
WHEN grade >= 3.0 THEN 'C'
ELSE 'D'
END AS grade_level
FROM students;
CASE
문의 ELSE
로 모든 조건에 해당하지 않는 경우 반환할 값을 설정할 수 있다.
NULL값 처리: NULL
과 COALESCE
데이터베이스의 NULL
은 값이 없음을 의미합니다.
NULL의 특성
NULL
은 값이 존재하지 않음을 의미합니다.
그래서 NULL
은 숫자나 문자열과 비교할 수 없습니다.
잘못된 예
SELECT *
FROM students
WHERE grade = NULL;
NULL
은 어떤 값과도 같지 않기 때문에, 어떤 결과도 반환하지 않습니다.
NULL
값과 비교를 하려면 IS NULL
또는 IS NOT NULL
을 사용해야 합니다.
예시: IS NULL
을 이용한 쿼리
SELECT name
FROM students
WHERE grade IS NULL;
이 쿼리는 grade 값이 NULL
인 학생을 조회하는 방법
COALESCE 함수
COALESCE
함수는 여러인자 중 NULL
이 아닌 첫 번째 값 반환
COALESCE(값1, 값2, 값3, ...)
예시: NULL
인 성적을 0으로 대체
SELECT name,
COALESCE(grade, 0) AS grade
FROM students;
grade
값이 NULL
인 경우 0을 반환하도록 작성.
COALESCE
는 여러 값 중 NULL
이 아닌 첫 번째 값을 반환하므로,
여기서는 grade
값이 존재하면 grade
값 반환, 존재하지 않으면 0을 반환.