IF, IFNULL, NULLIF, CASE ~ WHEN ~ END
[제어 흐름 함수]
설명
* IF ( <수식>, <참>, <거짓> )
<수식> 이 참이면 <참> 이 반환이 되고, <수식>이 거짓이면 <거짓>이 반환이 된다.
SELECT IF (100 > 200, 'True', 'False'); # False가 출력이 될 것 이다.
SELECT IF (200 > 100, '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');
<수식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' 이 출력되었다.
'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 |
댓글