ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

一个简单问题引起的对话

2019-07-13 20:09:11  阅读:240  来源: 互联网

标签:AVG 引起 ISNULL 判断 对话 简单 设计 默认值 facetok


原文链接:http://www.cnblogs.com/pfs1314/archive/2011/06/10/2077812.html

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

转载于:https://www.cnblogs.com/pfs1314/archive/2011/06/10/2077812.html

标签:AVG,引起,ISNULL,判断,对话,简单,设计,默认值,facetok
来源: https://blog.csdn.net/weixin_30329623/article/details/95782292

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有