반응형

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 문 사용법에 대해 알아보았습니다.

 


 

반응형