삼항 조건부 연산자란?
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 표현식을 활용하는 것이 좋습니다.