흐름제어 연산자

유영·2023년 3월 6일
0

MYSQL

목록 보기
2/20

흐름 제어
MySQL은 프로그램의 순차적인 흐름을 제어해야 할 때 사용할 수 있는 다양한 연산자와 함수를 제공합니다.

  1. CASE
  2. IF()
  3. IFNULL()
  4. NULLIF()

CASE

CASE 연산자는 값을 서로 비교하거나,
표현식의 논리값에 따라 다른 값을 반환합니다.

CASE 연산자의 문법은 다음과 같습니다.

1. CASE value
    WHEN [compare_value] THEN result
    [WHEN [compare_value] THEN result] ...
    [ELSE result]
END

2. CASE
    WHEN [condition] THEN result 
    [WHEN [condition] THEN result] ...
    [ELSE result]
END

첫 번째 CASE 문법에서는 value와 compare_value 값이 같으면, THEN 절의 result 값을 반환합니다.
만약 서로 값이 같지 않으면, ELSE 절의 result 값을 반환합니다.
이때 ELSE 절이 없으면, NULL을 반환합니다.

두 번째 CASE 문법에서는 condition의 논리값이 참이면, THEN 절의 result 값을 반환합니다.
만약 논리값이 거짓이라면, ELSE 절의 result 값을 반환합니다.
이때 ELSE 절이 없으면, NULL을 반환합니다.

SELECT CASE 0

    WHEN 0 THEN 'zero'

    WHEN 1 THEN 'one'

    ELSE 'more'

END;

//결과 : zero

IF()

IF() 함수는 첫 번째 인수로 전달받은 표현식의 논리값에 따라 다른 값을 반환합니다.

IF() 함수의 원형은 다음과 같습니다.

IF(expr1, expr2, expr3)

만약 expr1이 참이면 expr2를 반환하고, 거짓이면 expr3를 반환합니다.

SELECT IF(0 < 1, 'yes', 'no');
//yes

IFNULL()

IFNULL() 함수는 첫 번째 인수로 전달받은 값이 NULL인지 아닌지를 검사하여 다른 값을 반환합니다.

IFNULL() 함수의 원형은 다음과 같습니다.

IFNULL(expr1, expr2)

만약 expr1의 값이 NULL이 아니면 expr1 그 자체를 반환하고, NULL이면 expr2를 반환합니다.

SELECT IFNULL(NULL, '전달받은 값이 null입니다.');
//전달받은 값이 null입니다.

NULLIF()

NULLIF() 함수는 인수로 전달받은 두 값이 서로 같은지를 검사하여 다른 값을 반환합니다.

NULLIF() 함수의 원형은 다음과 같습니다.

NULLIF(expr1, expr2)

만약 expr1과 expr2의 값이 서로 같으면 NULL을 반환하고, 같지 않으면 expr1을 반환합니다.
따라서 NULLIF() 함수는 다음 예제의 CASE 문과 같은 동작을 수행합니다.

CASE
    WHEN expr1 = expr2 
    THEN NULL 
    ELSE expr1 
END
SELECT NULLIF(3, 3);
//NULL

0개의 댓글