在Firebird里如何防止空值扩散

2016-02-19 20:47 68 1 收藏

图老师设计创意栏目是一个分享最好最实用的教程的社区,我们拥有最用心的各种教程,今天就给大家分享在Firebird里如何防止空值扩散的教程,热爱PS的朋友们快点看过来吧!

【 tulaoshi.com - 编程语言 】

        在统计、计算、合并数据时,空值扩散问题,有时不经意冒出来,一不小心,就会导致结果出错。
          我举个例子。
         有一个成绩表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)
          这样写,似乎麻烦了一些,但是,它是一个安全的代码。

来源:http://www.tulaoshi.com/n/20160219/1624527.html

延伸阅读
标签: excel
excel单元格为空值时显示红色   excel表格我们经常会用到,在编辑的时候有些单元格是必须要填写的,所以为了防止漏填,或者忘记填写的情况。我们通常都会给这些单元格设置填充颜色。也就是说当这些单元格为空值时显示为红色,这样就可以起到漏填的功能。那么excel单元格为空时怎么显示为红色? excel版本比较多,这里以2007版本为...
#region 组件设计器生成的代码 /// /// 设计器支持所需的方法 - 不要使用代码编辑器 /// 修改此方法的内容。 /// private void InitializeComponent() { this.panel3 = new System.Windows.Forms.Panel(); this.panel1 = new System.Windows.Forms.Panel(); this.panel2 = new System.Windows.Forms.Panel(); this.lbSpace = new System.W...
简述: 单据流水号生成问题 问题: 如何用代码在“默认值”里实现自动编号?单据流水号生成问题。 如何用代码在“默认值”里实现自动编号? 如果我想实现不同类型的自动编号,我应该怎么设置代码呢? 如:第1号、第2号、...........、第198号.................. 或:CN0001-A、CN0002-B、CN0003-B、.........、CN0004-A、CN1998-B…… ...
public DateInput() { // 该调用是 Windows.Forms 窗体设计器所必需的。 InitializeComponent(); tbMonth.ContextMenu = mnu ; tbYear.ContextMenu = mnu ; tbDay.ContextMenu = mnu ; this.Height = 21 ; this.Value = DateTime.Now ; this.DateFormat = "yyyy-MM-dd" ; if (!this.DesignMode) CreateCalendar() ; this.UpDown.Width = 16 ; ...
标签: excel
在Excel 2010中如何高亮显示重复值 若想高亮度显示某一数据区域的重复值,可以使用 Excel 2010 中的条件格式得以实现。具体操作方法如下: 选择数据区域,如实例中货品编号所在的 A2:A13 区域。 从开始选项卡中选择条件格式,并点击新建规则。 选择仅对唯一值或重复值设置格式,确认已选中重复,即针对所选数据区域...

经验教程

739

收藏

58
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部