조건문
기존에는 데이터를 있는 그대로 활용을 했다. 그러나 업무의 과정에서 원하는 방식으로 데이터를 가공해야하는 상황이 발생한다. 이번에는 그 방법을 알아볼 것이다.
문자 변경하기
데이터를 사용할 때 기존의 형식을 그대로 이용할 수도 있지만 상황에 따라 수정을 하거나 일부만 조회할 수 있다.
REPLACE
데이터에 오타가 있거나, 전반적인 수정사항이 있을 때 사용한다.
replace(바꿀 컬럼, 현재 값, 바꿀 값)
[실습]
select addr "원래 주소",
replace(addr, '직할시', '광역시') "바뀐 주소"
# addr 칼럼에서 직할시로 표현된 부분을 광역시로 바꿔준 후 바뀐주소로 보여주기
from food_orders
where addr like '%직할시%' # addr에서 직할시를 포함할 때만
[결과]

SUBSTRING
데이터에서 필요한 부분만 조회할 수 있다.
substr(조회 할 컬럼, 시작 위치, 글자 수)
[실습]
select addr "원래 주소",
substr(addr, 1, 2) "시도"
# addr칼럼에서 1번째부터 2개 가져오기
from food_orders
where addr like '인천%' #인천으로 시작하는 것들만
[결과]

CONCAT
데이터를 여러곳에서 가져와 내가 원하는 형태로 정리하고 싶을 때 사용할 수 있다.
concat(붙이고 싶은 값1, 붙이고 싶은 값2,.....)
칼럼에서 가져온 데이터 뿐아니라 문자들을 합칠 수도 있다.
그럴때는 '문자열'을 활용하여 concat안에 넣어준다.
[실습]
select restaurant_name "원래 이름",
addr "원래 주소",
concat('[', substring(addr, 1, 2), '] ', restaurant_name) "바뀐 이름"
#[시도] 음식점 이름의 형태로 데이터를 합친다.
from food_orders
where addr like '서울%'
[결과]

조건문
칼럼 전체를 조회하는 것이 아니라 조건에 따라 검색하거나 조건에 따라 그룹을 나누어야 하는 상황에서 사용한다.
IF문
조건을 지정해주는 기초 문법이다. 조건을 충족할 때와 아닐때를 구분하여 결과를 출력하도록 한다.
if(조건, 조건을 충족할 때, 조건을 충족하지 못할 때)
[실습]
select addr "원래 주소",
if(addr like '%직할시%', replace(addr, '직할시', '광역시'), addr) "바뀐 주소"
# 조건: 만약 직할시가 포함된다면
# 조건 O : 직할시를 광역시로 변경
# 조건 X : 그래도 출력
from food_orders
where addr like '인천%'
[결과]

CASE문
조건을 두 개 이상 지정을 해야 할때 사용한다. 조건별로 분류(연령, 지역등..)할 수도 있다.
case when 조건1 then 값(수식)1 # 조건 1에 해당되면 값 1 출력
when 조건2 then 값(수식)2 # 조건 2에 해당되면 값 2 출력
else 값(수식)3 # 나머지는 값3 출력
end
[실습]
select name,
age,
gender,
case when (age between 10 and 19) and gender='male' then "10대 남자"
when (age between 10 and 19) and gender='female' then "10대 여자"
when (age between 20 and 29) and gender='male' then "20대 남자"
when (age between 20 and 29) and gender='female' then "20대 여자" end "그룹"
from customers
where age between 10 and 29
[결과]

Point to check
Case 를 사용할 때, 조건이 겹칠 때는 어떻게 작동할까?
여러개의 case when을 사용하더라도 그것은 하나의 칼럼을 구분할 뿐이다.
select에서 칼럼을 지정한 후에는 , 를 사용하여 다음 칼럼으로 넘어갔음을 알려줘야 한다.