2012-03-27 44 views
7

Với bảng:Truy vấn SQL để thêm giá trị của hai cột có chứa giá trị null?

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

truy vấn này:

SELECT (ONE + TWO) FROM (TABLE) 

Chỉ cần trả về tổng của các giá trị X1 's nhưng không phải là những người khác kể từ ít nhất một cột có giá trị null. Làm thế nào tôi vẫn có thể thêm chúng ngay cả khi có một null? tức là xem xét null là 0 có lẽ?

Trả lời

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

COALESCE sẽ trả về giá trị không null đầu tiên được tìm thấy trong các thông số từ trái sang phải. Vì vậy, khi các trường đầu tiên là null, nó sẽ lấy 0.

Bằng cách đó, X2 sẽ dẫn đến 10 + 0 = 10

1

đã có một câu trả lời tốt, nhưng tôi nghĩ rằng đó là giá trị đề cập đến antonpug (trong trường hợp anh ta không biết) rằng lý do tại sao điều này xảy ra là NULL không phải là một giá trị có thể được so sánh hoặc tổng kết.

NULL không phải là 0 hoặc '' (chuỗi rỗng), vì vậy mọi hoạt động liên quan đến NULL sẽ dẫn đến NULL (10 + NULL = NULL), thậm chí (NULL = NULL) sẽ đánh giá FALSE

+1

Tôi biết. Cảm ơn! – antonpug

+1

Trong Oracle, chuỗi rỗng là NULL. Điều này khác với RDBM chuẩn và các RDBM khác. Trong Oracle 'select 'true' từ dual where '' là null' trả về true và' select 'true' từ dual nơi '' = '' 'không trả về một hàng. Bởi vì điều này, toán tử ghép nối '||' sẽ chỉ trả về null nếu cả hai bên đều rỗng. 'select null || 'Hello World!' từ dual' cho chuỗi "Hello World!". –

Các vấn đề liên quan