我做了一堆和查詢的任何結果:SELECT col1 + col2 + col3 + ...
PostgreSQL的 - 排除與空
一些在某些列的值都是零。我正在檢查他們
SELECT CASE WHEN col1 is not null and col2 is not null and ...
我想知道是否有一個更簡潔的語法來完成此任務。
我做了一堆和查詢的任何結果:SELECT col1 + col2 + col3 + ...
PostgreSQL的 - 排除與空
一些在某些列的值都是零。我正在檢查他們
SELECT CASE WHEN col1 is not null and col2 is not null and ...
我想知道是否有一個更簡潔的語法來完成此任務。
好吧,既然,你可以這樣做以下(具有明顯的...
填寫):
select big_honking_sum
from(
select col1+col2+col3+...+coln as big_honking_sum
from some_table
)sum
where big_honking_sum is not null;
使用COALESCE功能,如果你能接受一個NULL值將作爲0
對待SELECT COALESCE(Col1,0)
+ COALESCE(Col2,0)
+ COALESCE(Col3,0)
AS TOTAL FROM table;
也許你可以考慮使用0作爲默認值而不是NULL(如果適用)。
感謝您的建議。在我的情況下,null是未指定的值,其中零爲零值。 – canisrufus 2012-03-12 19:31:31
你可以有更簡單:
SELECT foo
FROM ...
WHERE (-1 IN (col1, col2, col3)) IS NOT NULL
中表達將返回NULL
如果(且僅當)有測試值(和不匹配)中的至少一個NULL
值。因此,如果(且僅當)不存在NULL
,則整個表達式的計算結果爲TRUE。
編輯:我得糾正自己!正匹配將停止評估並返回TRUE
,即使NULL
是其中的值。所以你需要一個值得保證不會在集合中。類似於0,其中所有值均爲> 0或-1,其中所有值均爲正值,或者不能將此表達式用於此目的。
哦,謝謝。我在我的腦海裏,1 + null等於1.我想我已經編程了太多的JavaScript。 – canisrufus 2012-03-12 19:26:25
@canisrufus - 你是最受歡迎的。如果您發現我的答案有幫助,請考慮通過點擊我答案旁邊的upvote/downvote箭頭下方的複選標記來接受它。 – 2012-03-12 19:31:24
;)SO不會讓我選擇前15分鐘的答案。 – canisrufus 2012-03-12 19:34:09