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


89

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

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

MySQL에서 가능합니까?


답변:


149

이 시도 :

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

1
속기가 없다는 것은 부끄러운 일입니다. 그냥 참으로 동일시 첫 번째 값을 얻고 싶은 경우에, 당신은 확인해야 null또는 ''어쩌면 0. MySQL은 때때로 duche의 비트입니다
cronoklee

53

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

그것은 말한다 :

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`

4
+1하지만, 질문에 대답하기 :CASE WHEN id IS NULL THEN 0 ELSE id END
마이클 Krelin - 해커

@ MichaelKrelin-hacker : 똑같은 일, 아니? 그리고 IFNULL간결합니다.
궤도의 가벼운 경주

@ MichaelKrelin-hacker : 오, 알겠습니다.
궤도의 가벼운 경주

물론, 단지 :) 삼항에 대한 질문에 대답
해커 - 마이클 Krelin

제 경우에는 데이터를 다른 공급 업체 데이터베이스로 마이그레이션하고 있기 때문에 IF대신 사용 IFNULL하거나 COALESCEnull이 아닌 값을 가져 오지 않고 일반 상태로만 해석해야합니다. SELECT IF(a.cancellationReason IS NOT NULL, 'C', 'A')) as appointment_status나를 위해 작동합니다.
Adam Elsodaney

22

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

  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)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.