简单的逻辑运算

         今天一同学向我问了一个简单的逻辑运算问题,在日常生活中看似简单的逻辑运算,当你应用到程序设计中时特别要细心,如果不细心处理程序Run出来的结果会让你失望或者是不受你控制。下面我就用两个常用的SQL函数式举例说明:

          ①    ISNULL(SUM(字段名),0)    

          ②   SUM(ISNULL(字段名,0))

         首先,确定一个前提条件:①和②中的“字段名”是同一个字段,字段内的值为“NULL”和数值型。计算字段的和,那么请问①和②Run过之后的结果是否一样呢?其实它们都是简单的逻辑运算,最关键的是理清其中的逻辑运算顺序就好。

        其次,分别分析一下①和②的逻辑运算。①中的逻辑运算顺序是:先判求和,再按照ISNULL函数来计算。

                                                                                第一,如果字段中的值都是数值类型那么Run过后的结果就是字段内所有数值的总合,这样看来ISNULL函数的判断似乎没有多大                                                                                                     的意义,因为字段内的数据类型都为数值型;

                                                                                 第二,如果字段中的值都是"NULL"值,那么Run过后的结果就被0取代;

                                                                                 第三,如果字段中的值既是"NULL"值,又是数值类型,那么求和计算有些不受控制不知道会计算成什么结果,那么通过ISNULL函数                                                                                              计算 过后的值很难判定它的准确性,有点混乱,其结果不受控制。

                                                                               ②中的逻辑运算顺序是:先判断字段中的值是什么哪一种数据类型,经过ISNULL函数来计算后再求和。

                                                                                第一,如果字段中的值都是数值类型,那么Run过后的结果就是字段内所有数值的总合;

                                                                                 第二,如果字段中的值都是"NULL"值,那么通过ISNULL判别之后所有的字段值都为0,最终求和结果也就为0;

                                                                                 第三,如果字段中的值既是"NULL"值,又是数值类型,那么通过ISNULL判别之后字段中值为"NULL"其值都转为0,字段中的值为数                                                                                              值类型其值就是本身。其求和为一个准确的数值。

        最后,例子虽然简单,可是它要引起我们注意的是,看似简单的逻辑关系判断,应用到程序中时,特别要理清其判断的先后顺序。对于我来说第②种的判断顺序符合人们的思考顺序,第 ①种是错误的函数计算。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值