SQL 쿼리를 짜다보면 조건문을 써야하는 경우가 생깁니다.
그런 경우 if문과 case문을 사용할 수 있는데요,
Java의 if문, switch문과 유사하니 참고바랍니다.
1. if 문
update notices
set title = if(title is null, "제목이 null입니다.", "제목이 null이 아닙니다.");
- if ( 조건문, 참인 경우, 거짓인 경우 )
- title 값이 null인 경우 title 값을 "제목이 null입니다." 로 변경합니다.
- title 값이 null이 아닌 경우 title 값을 "제목이 null이 아닙니다." 로 변경합니다.
2. 중첩 if문
update notices
set title
= if(title is not null,
if(title = "제목이 null이 아닙니다.", "중첩 if문 참", "중첩 if문 거짓"),
"제목이 null입니다.");
- if문 안에 if문을 넣을 수 있습니다.
- title 값이 null이 아니고, title 값이 "제목이 null이 아닙니다."일 경우 title 값을 "중첩 if문 참" 으로 변경합니다.
- title 값이 null이 아니고, title 값이 "제목이 null이 아닙니다."가 아닐 경우 title 값을 "중첩 if문 거짓" 으로 변경합니다.
- title 값이 null일 경우 title 값을 "제목이 null입니다." 로 변경합니다.
- if문을 여러개 중첩하게 되면 코드가 지저분해지고, 가독성이 떨어집니다. 그렇게 되면 실수할 확률이 높아집니다.
- 따라서 조건문을 여러개 달아야 하는 경우 case 문을 사용하는 것이 좋습니다.
3. case 문
update notices
set title
= (
case content
WHEN '1' THEN '내용이 1인 글입니다.'
WHEN '2' THEN '내용이 2인 글입니다.'
WHEN '3' THEN '내용이 3인 글입니다.'
ELSE null
END
);
- content 값이 1인 경우 title 값을 "내용이 1인 글입니다." 로 변경합니다.
- content 값이 2인 경우 title 값을 "내용이 2인 글입니다." 로 변경합니다.
- content 값이 3인 경우 title 값을 "내용이 3인 글입니다." 로 변경합니다.
- content 값이 1, 2, 3이 모두 아닌 경우 title 값을 null로 변경합니다.
이상으로 MYSQL if 문과 case 문 사용법에 대해 알아보았습니다.
'Web Developer's Story > DATABASE' 카테고리의 다른 글
[MYSQL] 문자열 자르기 - left, right, substring 함수 (0) | 2020.09.01 |
---|---|
[MYSQL] SQL 연산자 - BETWEEN, IN, LIKE (0) | 2020.08.29 |
[MYSQL] 국가코드 테이블 만들기 (엑셀 다운로드) (0) | 2020.08.05 |
[MYSQL] SQL 문법 정리 - INSERT, UPDATE, SELECT, DELETE 문 (0) | 2020.08.04 |
[MYSQL] SQL 문법 정리 - CREATE, DROP 문 (0) | 2020.08.04 |