zoukankan      html  css  js  c++  java
  • 一个简单问题引起的对话

    P:前辈,请教个问题:null值在进行SUM,AVG等操作时默认是忽略的,对吗,那对AVG的结果应该会有影响吧,所以操作之前是不是要ISNULL转换,谢谢
    facetok:不需要
    P:为什么,会有影响吧
    facetok:设计时最好有默认值,如果是关键字的话
    facetok:用默认值设计去优化,数字型;实在需要判断时,别在数据库判断,用程序逻辑是判断。
    P:现在是设计时没有默认值,数据类型也有点问题,所以我做了类似这样的转换:
    AVG(ISNULL(CAST(Detail3 as int),0)),sql转换效率比不上程序逻辑判断吗
    facetok:你这种处理只能解决实际问题,但很不好。如果这种表很多呢?应考虑从根本上解决表设计的缺陷
    P:那前辈的建议是我现在改掉数据类型,然后加上默认值是吗
    facetok:如果没有默认值,可修改表设计。也可批量操作,对null改变值为0。对
    P:好,了解了,谢谢
    facetok:因为你这种处理不是源头解决方案:AVG(ISNULL(。。。别人做到模块可能没做判断,从而形成的系统的风险
    P:恩,受教了,写程序时多考虑一些极限情况,比如NULL等等,是吗
    facetok:必须的,如果程序不够健壮,很容易报错的。很简单的异常测试就能发现bug
    P:因为很多时候考虑到非特殊情况下,不会出现这些边缘测试和极限测试才出现的数据,

       (比如有个同事说,这个查询出来的肯定有数据,这个List进不进行非空判断没多大影响) 所以有时写程序有点放松
    facetok:嗯,这是经验问题,需要慢慢积累。严谨的结构必须包含验证/判断和异常处理,并且这些要尽量归纳为通用的处理机制
    P:通用的处理机制指的是什么,可以举个例子吗
    facetok:就是一些封装,基类和工具类等

  • 相关阅读:
    Android MulticastSocket IP组播
    IP组播技术介绍及实现例子
    机器学习:多变量线性回归
    慘挂阿里笔试题
    Android使用am命令实现拨打电话、打开应用
    社交O2O的进化
    hibernate4中HHH000273的错误
    Java中常见的排序算法
    Axure实现淡入淡出效果
    Ubuntu虚拟机+ROS+Android开发环境配置笔记
  • 原文地址:https://www.cnblogs.com/pfs1314/p/2077812.html
Copyright © 2011-2022 走看看