본문 바로가기
저장소이야기/MySql

[MySql] 제어함수 IF IFNULL NULLIF

by 사랑꾼이야 2020. 11. 3.
반응형



프로그램을 작성하다보면, 로직를 제어를 해야하는 순간이 있다.

그럴때마다 고민을 하는데, 

비즈니스 로직에서 풀어야 하는 것이 맞을까? 또는 쿼리에서 풀어야 하는 것이 맞을까?

결론만 놓고 본다면 상황을 놓고 봐야 하는 것이 정답이다.


MySql에서 사용하는 제어함수 중 가장 기본적인 함수에 대해서 알아보도록 하자.



IF 함수.

  • 사용방법 - IF(expr1, expr2, expr3)
  • 가장 대표적인 제어함수.
  • 첫 번째 인수(expr1)의 표현식의 따라 참(True)인 경우 두 번째 인수(expr2) 반환하고 거짓(False)일 경우 세 번째 인수(expr3) 반환

docs. 

https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#function_if


1. 표현식이 참(True)인 경우

SELECT IF(3 > 4, 3, 4);


IF(4 > 3, 3, 4)|
---------------|
              3|


2. 표현식이 참(False)인 경우

SELECT IF(3 > 4, 3, 4);


IF(3 > 4, 3, 4)|
---------------|
              4|



IFNULL 함수.

  • 사용방법 - IFNULL(expr1,expr2)
  • 첫 번째 인수값이 NULL이 아니면 첫 번째 인수값 반환하고 NULL이면 두 번째 인수값 전달

docs. 

https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#function_ifnull


1. 값이 NULL이 아닌 경우

SELECT IFNULL('null이 아닙니다.', null);


IFNULL('null이 아닙니다.', null)|
--------------------------------|
null이 아닙니다.                |


2. 값이 NULL인 경우

SELECT IFNULL(null, 'null입니다.');


IFNULL(null, 'null입니다.')|
---------------------------|
null입니다.                |



NULLIF함수.

  • 사용방법 - NULLIF(expr1,expr2)
  • 첫 번째 인수와 두 번째 인수값을 비교하여 같으면 NULL 전달, 다르면 첫 번째 인수 전달

docs.

https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#function_nullif


1. 값이 같을 경우_1

SELECT NULLIF(1, 1);


NULLIF(null, null)|
------------------|
                  |


2. 값이 같은 경우_2

SELECT NULLIF(null, null);


NULLIF(null, null)|
------------------|
                  |


3. 값이 다른 경우

SELECT NULLIF(1, null);


NULLIF(1, null)|
---------------|
              1|


반응형

댓글