2011-12-14 4 views
48

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

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

는 MySQL의에서 수 있습니까?

+0

가능한 중복 http://stackoverflow.com/questions/1647961/how-do-you-write-a-conditional-in- a-mysql-select-statement) –

답변

94

이 시도 :

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

The documentation은 (는) 친구입니다. 당신은 그것을 읽어야합니다!

은 말한다 : expr1하지 NULL, IFNULL() 반환 expr1입니다

IFNULL(expr1,expr2) 

경우; 그렇지 않으면 expr2을 반환합니다.

그리고 많은 예제가 있습니다. 이것은 NULL에 대한 비교와 비교 대상을 두 번째 피연산자로 사용하는 삼항 조건부를 사용하는 것과 같습니다. 심볼 ?:을 사용하면 실제로 아무 것도 관련이 없게됩니다.

따라서, 귀하의 경우 : 당신이 명시 적으로 (왜?!) 세 개의 피연산자를 제공하기 위해 필사적 경우

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

IF로 전환 :

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

+1하지만 질문에 답할 때 : 'ID는 NULL 일 때 0 ELSE id END' –

+0

@ MichaelKrelin-hacker : 똑같은 거요? 그리고'IFNULL'은 더 간결합니다. –

+0

@ MichaelKrelin-hacker : 오, 알겠습니다. –

14

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

  1. 예 : IF 기능을 사용하십시오. IF(expression, true result, false result)
  2. 예 : CASE 표현식을 사용하십시오. 당신은 NULL을 검사 할 때

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

는 당신은, 예를 IFNULL 또는 COALESCE 기능을 사용할 수 있습니다.

IFNULL(ID, 0) 
COALESCE(ID, 0) 
[당신이 MySQL을 선택 성명에서 조건부 쓰기합니까?] (의
관련 문제