MySQL : NULL을 0으로 형변환


82

다음 테이블을 가정 해 보겠습니다 (예 : 여러 내부 결합 명령문의 결과).

id | column_1 | column_2
------------------------
 1 |  1       | 
 2 |  2       | 2
 3 |          | 3

예를 들어 다음 문에서 얻을 수 있습니다.

select a.id, t1.column_1, t2.column_2
from a
left join t1 on a.id = t1.id
left join t2 on a.id = t2.id

이제 다음과 같이 t1.column_1과 t2.column_2를 합산하려면

select 
    a.id, 
    t1.column_1, 
    t2.column_2,
    (t1.column_1 + t2.column_2) as cumulated
from a
left join t1 on a.id = t1.id
left join t2 on a.id = t2.id

reslut는 다음과 같이 보일 것입니다.

id | column_1 | column_2 | cumulated
------------------------------------
 1 |  1       | NULL     | NULL
 2 |  2       | 2        | 4
 3 |  NULL    | 3        | NULL

내 질문은 기본적으로 : 일부 수학을 수행하기 위해 NULL을 0으로 형변환하는 방법이 있습니까?

나는 시도 CONVERT(t1.column_1, SIGNED)하고 CAST(t1.column_1 as SIGNED)있지만,이 NULL을 유지 NULL.

답변:


154

IFNULL(column, 0)열 값을 0으로 변환하는 데 사용 합니다. 또는 COALESCE 함수는 (1) COALESCEANSI 규격이고 IFNULL그렇지 않은 경우 (2) COALESCE임의 개수의 열 / 값을 가져와 전달 된 첫 번째 null이 아닌 값을 반환 한다는 점을 제외하고 동일한 작업 을 수행합니다.


그리고 coalesce는 둘 이상의 값을 가질 수 있습니까?
ante.sabo

10
예 ... 따라서 COALESCE (column1, column2, 0)은 이러한 값 중 null이 아닌 첫 번째 값을 반환합니다. 이것은 수직이 아닌 수평으로 작동합니다. 열은 동일한 테이블 행에 속해야합니다.
David Andres

@rexem : 감사합니다. 말씀 해주셔서 감사합니다. 매우 감사!
David Andres

@David Andres 백만 명의 감사합니다. 두 번째로 찬성 할 수만 있다면.
이야기
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.