MySQL) IF, IFNULL, NULLIF, CASE ~ WHEN ~ END
본문 바로가기
Data Base/SQL

MySQL) IF, IFNULL, NULLIF, CASE ~ WHEN ~ END

by 조훈이 2022. 1. 11.

 IF, IFNULL, NULLIF, CASE ~ WHEN ~ END 

[제어 흐름 함수]


  설명 

 

 * IF ( <수식>, <참>, <거짓> ) 

  <수식> 이 참이면 <참> 이 반환이 되고, <수식>이 거짓이면 <거짓>이 반환이 된다.

 

SELECT IF (100 > 200, 'True', 'False'); # False가 출력이 될 것 이다.
SELECT IF (200 > 100, 'True', 'False'); # True가 출력이 될 것 이다.

 

False를 반환

 

True를 반환

 

  <수식> 이 100 > 200 인 선언문은 거짓 이므로 <거짓> 이 출력되어 'False'가 출력이 되었고, 수식이 200 > 100 인 선언문은 참 이므로 <참> 이 출력되어 'True'가 출력이 되었다.

 

 * IFNULL ( <수식1>,  <수식2> ) 

  <수식1> 이 NULL이 아니면 <수식1>이 반환이 되고, NULL이면 <수식2>가 반환이 된다.

 

SELECT IFNULL (NULL, 'This is NULL');
SELECT IFNULL (1000, 'This is NOT NULL');

 

NULL 인 경우

 

NULL 이 아닌 경우

 

  <수식1>이 NULL인 경우에는 <수식2>가 반환이 되어 'This is NULL' 이 출력이 되었고, <수식1> NULL이 아닌 경우에는 <수식1> 이 반환되어 1000이 출력이 되었다.

 

 * NULLIF ( <수식1>,  <수식2> ) 

  <수식1> 과 <수식2> 가 같으면 NULL이 반환이 되고, 다르면 <수식1> 이 반환이 된다.

 

SELECT NULLIF(100, 100);
SELECT NULLIF(100, 200);

 

두 수식이 같은 경우

 

두 수식이 다른 경우

 

  두 수식의 값이 100으로 같은 경우에는 NULL이 출력이 되었고, 100, 200 으로 다른 경우에는 <수식1>이 출력이 된 것을 확인할 수 있다.

 

 IF, IFNULL, NULLIF 정리 


 

 * CASE <식> WHEN <경우> ELSE ~ END 

  <식> 에 대해서 <경우> 들과 비교를 하여 원하는 값을 반환하도록 한다. 또한 WHEN <경우> 의 경우들 모두 일치하는 경우가 없다면 ELSE 문이 실행이 된다.

 

SET @VAR = 300;		# VAR변수를 300으로 정의
SELECT CASE @VAR
		WHEN 100 THEN 'This is 100'
		WHEN 200 THEN 'This is 200'
		WHEN 300 THEN 'This is 300'
		ELSE 'Else is printed'
		END AS 'VAR';

 

  위의 경우에는 VAR변수의 값이 100인 경우에는 'This is 100' 을 반환, 200인 경우에는 'This is 200'을 반환, 300인 경우에는 'This is 300' 을 반환 그리고 100, 200, 300 이 모두 아닌 경우에는 'Else is printed' 를 반환하게 된다. VAR 변수는 300으로 정의를 하였으므로, 'This is 300'이 출력이 될 것 이다.

 

 

  'This is 300' 이 출력되었다.

728x90

'Data Base > SQL' 카테고리의 다른 글

MySQL) 프로시저(PROCEDURE)  (0) 2022.01.17
MySQL) WITH절을 이용한 비재귀적 CTE  (0) 2022.01.04
MySQL) ON DUPLICATE KEY UPDATE  (0) 2022.01.04
MySQL) 샘플 데이터 테이블 생성  (0) 2022.01.04
MySQL) AUTO_INCREMENT  (0) 2022.01.04

댓글