• 一个简单问题引起的对话


    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:就是一些封装,基类和工具类等

  • 相关阅读:
    【转载】Unity的内存管理与性能优化
    [转载]有关placement new
    国内外有用的课程资源
    os模块批量重命名多个工作簿
    利用xlwings将一个工作表,拆成多个工作簿
    利用xlwings批量打开同一文件夹下的N多EXCEL表格
    回归初心,探索真我写在2022年的开始
    利用xlwings在多个工作簿中批量新增工作表
    今日份试题,关于Python办公自动化应用
    随想
  • 原文地址:https://www.cnblogs.com/pfs1314/p/2077812.html
Copyright © 2020-2023  润新知