데이터(data)와 정보(information)는 다르다. 데이터를 데이터베이스에 저장되어 있는 그대로의 것이라고 한다면 정보는 이를 가공하여 읽는 사람에게 의미를 주도록 한 것이다. 예를 들어 데이터베이스에 성별을 의미하는 'M', 'F'라는 알파벳이 저장되어 있다면 이를 '남성', '여성'이라는 정보로 변환할 수 있다.
데이터를 어떤 조건에 따라 변환할 때 SQL에서는 CASE WHEN 구문을 사용한다. 사용 방법을 먼저 살펴보자.
CASE WHEN <조건 1> THEN <처리 1> WHEN <조건 2> THEN <처리 2> ELSE <처리 3> END
예는 아래와 같다. StudGender 컬럼의 값이 'M', 'F' 혹은 그 이외의 값인가에 따라 다른 값으로 바꾸어준다.
SELECT StudId, StudFirstName, StudLastName,
(CASE WHEN StudGender='M' THEN 'Male'
WHEN StudGender='F' THEN 'Female'
ELSE 'Not specified' END) AS GENDER
FROM students;
CASE 구문을 아래와 같이 CASE와 WHEN 키워드 사이에 조건을 제공하는 컬럼을 넣어 사용할 수도 있다.
CASE <컬럼> WHEN <컬럼 조건 1> THEN <처리 1> WHEN <컬럼 조건 2> THEN <처리 2> ELSE <처리 3> END
다시 학생의 성별을 나타내는 예를 위 문법으로 표현하면 아래와 같다.
SELECT StudId, StudFirstName, StudLastName,
(CASE StudGender
WHEN 'M' THEN 'Male'
WHEN 'F' THEN 'Female'
ELSE 'Not specified' END) AS GENDER
FROM students;
개인적인 생각이지만 첫 번째 방법, CASE WHEN을 사용하고 컬럼='조건'으로 나열해 주는 방법이 조금 더 직관적이고 외우기 쉽다고 생각한다. 중요한 것은 두 방법을 함께 사용하면 혼란스러우니 한 방법을 택해서 그 방법만 사용하는 것을 추천한다.
CASE WHEN 구문을 보통 SELECT list 안의 값을 나타낼 때 사용한다. 하지만 반드시 SELECT list 안에서만 사용되어야 하는 것은 아니다. 조인 조건이 되는 두 테이블의 컬럼을 매칭 시킬때도 CASE WHEN 구문을 사용할 수 있다. 당장 적절한 예가 생각나지 않아 예는 제공하지 못했다. 하지만 조건에 따른 처리가 필요한 경우 다양한 위치에서 CASE WHEN 구문을 사용할 수 있다고 정리하면 좋을 것 같다.
■
'데이터 모델과 SQL' 카테고리의 다른 글
[SQL 이해하기] 2. 데이터의 이해 - 엔터티 (0) | 2023.05.09 |
---|---|
[SQL 이해하기] 1. 데이터 모델링의 이해 (0) | 2023.05.09 |
[데이터 모델과 SQL] 18. NOT 그리고 AND 문제 2/2 (0) | 2023.03.08 |
[데이터 모델과 SQL] 18. NOT 그리고 AND 문제 1/2 (0) | 2023.02.16 |
[데이터 모델과 SQL] 17. 정보 삭제 - DELETE (0) | 2023.02.08 |
댓글