在Firebird裡如何防止空值擴散

2021-04-06 13:22:28 字數 486 閱讀 6936

在統計、計算、合併資料時,空值擴散問題,有時不經意冒出來,一不小心,就會導致結果出錯。

我舉個例子。

有乙個成績表achieve,有四個字段:yuwen、shuxue、yingyu、total,分別用來儲存語文、數學、英語及總分。現在要計算學生的總分,現寫出如下sql語句:

update achieve set total=yuwen+shuxue+yingyu

這句語句好像是沒錯的,但有時得不出有用的結果,比如,有個學生語文80,數學90,英語缺考,沒填成績,這時yingyu欄位的值很可能不是0而是null,空值,要看設計的人是什麼想法。如果yingyu的值為null,那麼,大家猜猜,計算出來,總分欄位total為多少?

按一般的想法,當然是80+90,這個學生的總分是170,英語欄位不參加計算。但是,這是錯誤的!

實際計算出來,這個學生的總分為空(null)。

在乙個sql計算表示式裡,如果有乙個值為空,那麼結果就一定為空!這就是空值擴散!!!

Firebird如何防止空值擴散

在統計 計算 合併資料時,空值擴散問題,有時不經意冒出來,一不小心,就會導致結果出錯。我舉個例子。有乙個成績表achieve,有四個字段 yuwen shuxue yingyu total,分別用來儲存語文 數學 英語及總分。現在要計算學生的總分,現寫出如下sql語句 update achieve ...

如何檢測字串在Obj C裡是否為空?

marc charbonneau 可以檢查是否 string length 0。這將檢查它是否是乙個有效但是為空的字串 以及其是否為無值。因為呼叫無值的length也將返回0。matt g 樓上的回答是正確的。但是我想藉此機會介紹一下wil shipley總結的isempty,他分享在blog上的 ...

如何防止在Gridview建立的控制項在回發後消失

本文主要講述如何實現在標題頭上放乙個按鈕上去,按下去選擇一整個列的功能。用三種方法演示效果。方法一 較簡單 使用模板列 html code asp gridview id gridview1 runat server autogeneratecolumns false width 230px col...