2012-03-27 8 views
7

감안할 때 테이블 :null 값을 포함하는 두 개의 열 값을 추가하는 SQL 쿼리?

 
    ID ONE TWO 
    X1 15 15 
    X2 10 - 
    X3 -  20 

이 쿼리 :

SELECT (ONE + TWO) FROM (TABLE) 

그냥 적어도 하나의 열 때문에 X1의 값이 아니라 다른 사람의 합계를 반환 null 값을 가지고 있습니다. null이 있어도 어떻게 추가 할 수 있습니까? 즉 0을 null로 간주할까요?

답변

10
SELECT (COALESCE(ONE, 0) + COALESCE(TWO, 0)) FROM (TABLE) 

COALESCE 왼쪽부터 파라미터 검색된 제 널이 아닌 값을 반환한다. 첫 번째 필드가 null 때, 그것은 X2 이미 좋은 답변이 10 + 0 = 10

1

을 초래할 것이라고 0

그 방법을 취할 것입니다,하지만 난에 (가 antonpug에 가치가 언급 생각 사건이 일어나는 이유는 NULL이 비교되거나 합쳐질 수있는 가치가 아니라는 것입니다.

NULL은 0 또는 ''(빈 문자열)이 아니므로 NULL을 포함하는 모든 작업이 NULL을 (10 + NULL = NULL을)됩니다, 심지어 (NULL = NULL) FALSE

+1

에 내가 알고 평가합니다. 감사! – antonpug

+1

Oracle에서 빈 문자열은 NULL입니다. 이것은 표준 및 다른 RDBM과 다릅니다. 오라클에서는''null '이 true를 반환하는 이중에서'true '를 선택하고''= ' "'가 행을 반환하지 않는 이중에서'true '를 선택합니다. 이 때문에 연결 연산자'||'는 양쪽이 null 인 경우에만 null을 반환합니다. 'select null || 'Hello World!' from dual'은 "Hello World!"문자열을 제공합니다. –