SQL 함수 사용하기 (단일 행 함수의 제어/기타 함수)
22 Jul 2025 | SQL개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
형 변환 함수
데이터를 검색, 삽입할 때 컬럼에 맞는 형식으로 지정하지 않으면 오류가 나는 경우 사용하는 함수
CAST
- CAST(값 as 데이터타입): 원하는 형태로 데이터타입을 변경하여 처리 혹은 확인
-- 문자를 숫자로
SELECT CAST('1' as unsigned);
-- 숫자를 문자로
SELECT CAST(1 as char(1));
제어 흐름 함수
프로그램의 흐름을 제어할 때 사용
IF
- IF(조건, 수식1, 수식2): 조건 결과가 참이면 수식1 반환, 거짓이면 수식2 반환
-- 제품 테이블에서 단가가 3000 이상이면 '고가', 이하면 '저가'
SELECT IF (단가 >= 3000, '고가', '저가') FROM 제품;
IFNULL, NULLIF
- IFNULL(수식1, 수식2): 수식1이 null이 아니면 수식1 반환, null이면 수식2 반환 > 결측치 처리
- NULLIF(수식1, 수식2): 두 값이 같으면 null, 다르면 수식1 반환
SELECT IFNULL(1, 0); -- 1
SELECT IFNULL(null, 0); -- 0
SELECT NULLIF(12*10, 120); -- null
SELECT NULLIF(12*10, 1200); -- 120
CASE
- CASE(WHEN 조건1 THEN 결과1 .. ELSE END): 조건 비교가 여러개일때 사용
- IF문의 확장버전
-- 주문 금액이 5,000원 이상이면 ‘초과달성’, 4,000원 이상이면 ‘달성’ 그 나머지는 ‘미달성’
SELECT
CASE
WHEN 주문금액 >= 5000 THEN '초과달성'
WHEN 주문금액 >= 4000 THEN '달성'
ELSE '미달성'
END
AS '달성여부'
문제를 풀어보자
문제1
고객회사명의 앞 두글자를 **로 변경해보기
SELECT 고객회사명, CONCAT('**', SUBSTR(고객회사명, 3));
문제 2
도시에서 특별시나 광역시는 대도시로, 나머지는 도시로 구분
SELECT 도시, IF(도시 LIKE '%특별시' or 도시 LIKE '%광역시', '대도시', '도시') AS '도시 구분';
문제 3
마일리지가 100점 이상이면 vvip, 50점 이상이면 vip, 이외는 일반고객으로 구분
SELECT 마일리지
CASE
WHEN 마일리지 >= 100 THEN 'vvip'
WHEN 마일리지 >= 50 THEN 'vip'
ELSE '일반고객'
END
문제4
주문일, 주문년도, 분기, 월, 일, 요일, 한글요일을 조회
SELECT 주문일, YEAR(주문일), QUATER(주문일), MONTH(주문일), DAY(주문일), WEEKDAY(주문일) 요일,
ELT(DAYOFWEEK(주문일), '일', '월', '화', '수', '목', '금', '토') 한글요일;