Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 삼항 조건부 연산자(?:)를 구현하는 방법

삼항 조건부 연산자란?

C, C++, Java 등의 프로그래밍 언어에서 삼항 조건부 연산자는 ?: 형태로 표현되며, 조건의 참·거짓 여부에 따라 서로 다른 값을 반환하는 연산자입니다. 기본 문법은 다음과 같습니다.

(조건식) ? 표현식1 : 표현식2;

위 문법에서 조건식이 참(true)으로 평가되면 표현식1이 실행되고, 거짓(false)으로 평가되면 표현식2가 실행됩니다.

MySQL에서는 삼항 연산자를 지원하지 않습니다

그러나 MySQL에는 삼항 조건부 연산자(?:)가 존재하지 않기 때문에 위 문법을 그대로 사용할 수 없습니다. 대신 MySQL에서 제공하는 IF() 함수를 사용하면 동일한 목적을 달성할 수 있습니다.

IF() 함수의 기본 문법은 다음과 같습니다.

IF(조건식, 참일_때_값, 거짓일_때_값)

예제로 확인하기

사례 1: 조건이 거짓인 경우

다음 쿼리는 3 > 5라는 조건이 거짓이므로 두 번째 인수인 'Condition is not true'가 결과로 반환됩니다.

mysql> select if(3 > 5,'Condition is true','Condition is not true') as ConditionalResult;
+-----------------------+
| ConditionalResult     |
+-----------------------+
| Condition is not true |
+-----------------------+
1 row in set (0.00 sec)

사례 2: 조건이 참인 경우

반대로 3 < 5라는 조건은 참이므로 첫 번째 인수인 'Condition is true'가 결과로 반환됩니다.

mysql> select if(3 < 5,'Condition is true','Condition is not true') as ConditionalResult;
+-------------------+
| ConditionalResult |
+-------------------+
| Condition is true |
+-------------------+
1 row in set (0.00 sec)

참고: CASE 표현식을 활용한 대안

분기할 조건이 여러 개인 경우에는 CASE 표현식을 사용하는 것이 더 유연하고 가독성이 좋습니다.

SELECT
  CASE
    WHEN 3 > 5 THEN 'Condition is true'
    ELSE 'Condition is not true'
  END AS ConditionalResult;

단순한 이중 분기라면 IF() 함수로 충분하며, 복잡한 다중 조건 처리에는 CASE 표현식을 활용하는 것이 좋습니다.