国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在Firebird里如何防止空值擴散

2019-11-18 17:59:01
字體:
來源:轉載
供稿:網友
        在統計、計算、合并數據時,空值擴散問題,有時不經意冒出來,一不小心,就會導致結果出錯。
        我舉個例子。
       有一個成績表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計算表達式里,如果有一個值為空,那么結果就一定為空!這就是空值擴散!!!
        那么,如何防止出現空值擴散的情況呢?
        在這方面,SQL Server提供了ISNULL()函數,access提供了NZ()函數,都可以解決這個問題,這些函數就是提供一個判斷功能:如果為空,則用某個值代替,比如用0或用空字符串等。Firebird有類似函數么?
        有,那就是函數coalesce()。
        只要將以上的SQL語句改為如下即可。
       update achieve set total=coalesce(yuwen,0)+coalesce(shuxue,0)+coalesce(yingyu,0)
        這樣寫,似乎麻煩了一些,但是,它是一個安全的代碼。


上一篇:如何在數據中能加載.JPG格式的圖片

下一篇:關于TButton類型不能響應OnDBClick事件

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 临漳县| 民县| 江陵县| 祁阳县| 沙田区| 海晏县| 潼关县| 桑植县| 滨州市| 兴文县| 惠州市| 南和县| 沂水县| 正宁县| 东平县| 呈贡县| 峨山| 调兵山市| 得荣县| 曲麻莱县| 广宗县| 祁门县| 天峨县| 绿春县| 大厂| 司法| 洛浦县| 虞城县| 开封市| 陕西省| 阳信县| 和田县| 新沂市| 库尔勒市| 蓬溪县| 财经| 易门县| 冷水江市| 株洲市| 永登县| 双桥区|