[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을 반환.