[mysql] MySQL에서 삼항 조건 연산자를 구현하는 방법

MySQL에서 삼항 조건부 연산자를 구현하고 싶습니다. 하나의 필드 ID가있는 테이블이 있습니다. 값은 null 일 수 있습니다. 다음 id과 같은 삼항 조건부 형식 으로 표시 하고 싶습니다.

select id = id == null ? 0 : id;

MySQL에서 가능합니까?



답변

이 시도 :

select if(Id is null, 0, id) as Id;


답변

문서 는 당신의 친구입니다. 읽어야합니다!

그것은 말한다 :

IFNULL(expr1,expr2)

그렇지 expr1않은 NULL경우 IFNULL()반환합니다 expr1. 그렇지 않으면을 반환합니다
expr2.

그리고 많은 예. 이것은 NULL비교 대상과 비교 대상을 두 번째 피연산자 로 사용하는 삼항 조건을 사용하는 것과 같습니다 . 이 기호를 사용하여 발생하지 않습니다 ?그리고 :당신은 아무것도 정말 관련이없는 얻을.

따라서 귀하의 경우 :

SELECT IFNULL(`id`, 0) FROM `table`

세 개의 피연산자를 명시 적으로 제공하고 싶다면 (왜?!) 다음으로 전환하십시오 IF.

SELECT IF(`id` IS NULL, 0, `id`) FROM `table`


답변

삼항 연산자와 동일한 논리를 구현할 수있는 두 가지 방법이 있습니다.

  1. IF예를 들어 기능을 사용하십시오 .IF(expression, true result, false result)
  2. CASE식을 사용하십시오 .

    CASE WHEN expression THEN <true result> ELSE <false_result> END
    

NULL을 확인할 때 IFNULL또는 COALESCE함수를 사용할 수 있습니다 .

IFNULL(ID, 0)
COALESCE(ID, 0)


답변