Database

[DB] MySQL 조건문 사용 방법

limsw 2022. 7. 4. 23:34
반응형

서론

이번 글에서는 MySQL을 사용할 때 조건문의 종류와 사용하는 방법을 간단하게 다뤄보고자 한다.

 

MySQL 조건문을 살펴볼 내용들은 다음과 같다.

  • CASE WHEN
  • IF
  • IFNULL
  • NULLIF

CASE WHEN

CASE WHEN [CONDITION] THEN [TRUE] ELSE [FALSE] END

 

  • CASE WHEN 구문을 사용할 때에는 CASE WHEN, THEN, ELSE, END 명령어가 필수로 들어간다는 것을 기억하자.
  • CONDITION : 제약 사항을 정의하기 위한 조건이 들어간다.
  • THEN 다음에는 조건이 참일 경우에 실행될 명령어가 들어간다.
  • ELSE 다음에는 조건이 거짓일 경우에 실행될 명령어가 들어간다.

예시를 통해 살펴보자.

위 그림은 WHEN 절에 1=1 이라는 제약 사항이 있다. 해당 조건은 참이므로 THEN 뒤에 있는 'Good' 문자열을 반환한다.

위 그림은 WHEN 절에 'good'='bad' 이라는 제약 사항이 있다. 해당 조건은 거짓 이므로 ELSE 뒤에 있는 'Bad' 문자열을 반환한다.

IF

IF문 조건을 사용하기 위해서는 다음과 같이 구조를 정의하여 사용할 수 있다.

IF(조건, '참', '거짓')

 

조건이 거짓이므로 '거짓' 이라는 문자열이 반환된 것을 확인할 수 있다.

이 때 속성명은 IF문 전체가 속성 이름으로 들어가는데 속성명 또한 별칭으로 바꾸어 결과를 도출할 수 있다.

IFNULL

IFNULL 명령어는 첫번째 인자의 필드 값이 NULL 인 경우 두번째 인자로 대체하여 출력하는 것이다.

SELECT IFNULL(컬럼명, '대체 값') FROM [table]

NULLIF

NULLIF 명령어는 첫번째, 두번째 값이 같으면 NULL을 반환, 같지 않다면 첫번째 값을 반환하는 명령어이다.

NULLIF(expr1, expr2)

위 형식을 통해 추가적으로 설명을 해보자면 expr1 = expr2인 경우 NULL을 반환, 그렇지 않다면 expr1을 반환한다.

번외

MySQL 이외에도 MSSQL에서 사용하는 ISNULL, Oracle 에서 사용하는 NVL이 존재하는데 해당 명령어도 간단하게 알아보자.

 

먼저, MSSQL에서 사용하는 ISNULL의 예시이다.

ISNULL(컬럼명, '대체 값') FROM [table]

ISNULL의 경우 MySQL의 IFNULL과 의미가 동일하다. 첫번째 인자의 필드 값이 NULL인 경우 두번째 인자값으로 대체하여 결과를 출력한다.

 

예를 들어, SELECT name, ISNULL(age, 0) from user_table; 라는 간단한 SQL 질의어가 있다고 가정해보면,

  • name의 경우에는 제약 사항을 추가하지 않았으므로 NULL인 데이터가 있는 경우 결과가 NULL로 출력된다.
  • age의 경우에는 ISNULL 조건을 추가했으므로 NULL인 데이터는 0 이라는 값으로 바뀌어 결과가 출력된다.

마지막으로 Oracle의 NVL 명령어 예시이다.

NVL(컬럼명, '대체 값')

NVL 명령어도 IFNULL, ISNULL과 동일한 의미를 가진다. 첫번째 인자의 필드 값이 NULL인 경우 두번째 인자값으로 대체하여 결과를 출력한다. NVL을 이용하여 ISNULL 예제에서 사용한 쿼리문을 다시 작성하면 다음과 같이 작성할 수 있다.

  • SELECT name, NVL(age, 0) from user_table;