흐름 제어
- MySQL은 프로그램의 순차적인 흐름을 제어해야 할 때 사용할 수 있는 다양한 연산자와 함수를 제공해줍니다.
CASE
IF()
IFNULL()
NULLIF()
1) CASE
CASE
연산자는 값을 서로 비교하거나, 표현식의 논리값에 따라 다른 값을 반환합니다.
CASE [값]
WHEN [비교값1] THEN [결과값1]
WHEN [비교값2] THEN [결과값2]
ELSE [결과값3]
END
CASE
WHEN [표현식1] THEN [결과값1]
WHEN [표현식2] THEN [결과값2]
ELSE [결과값3]
END
2) IF()
IF()
함수는 첫번째 인수로 전달받은 표현식의 논리값에 따라 다른 값을 반환합니다.
IF(expr1, expr2, expr3)
- 만약 expr1이 참이면 expr2를 반환하고, 거짓이면 expr3를 반환합니다.
- Ex)
SELECT IF(0 < 1, 'yes', 'no');
3) IFNULL()
IFNULL()
함수는 첫번째 인수로 전달받은 값이 NULL인지 아닌지를 검사하여 다른 값을 반환합니다.
IFNULL(expr1, expr2)
- 만약 expr1의 값이 NULL이 아니면 expr1 그 자체를 반환하고, NULL이면 expr2를 반환합니다.
- Ex)
SELECT IFNULL(NULL, '전달받은 값이 NULL입니다');
4) NULLIF()
NULLIF()
함수는 인수로 전달받은 두 값이 서로 같은지를 검사하여 다른 값을 반환합니다.
NULLIF(expr1, expr2)
- 만약 expr1과 expr2의 값이 서로 같으면 NULL을 반환하고, 같지 않으면 expr1을 반환합니다.
- 따라서
NULLIF()
함수는 다음 CASE
문과 같은 동작을 수행합니다.
CASE
WHEN expr1 = expr2 THEN NULL
ELSE expr1
END