oracle中nvl函数
最近在修改项目中一个统计的bug,统计出的钱数不对,因为不是自己开发的模块,经过分析流程找到了统计的sql。
sum(f_msmoney)+sum(f_fkmoney) as total,
上面这段是计算钱数的sql,看上去没有什么问题,但是sql查出来的total值居然是null,然后开始检查表结构和数据,发现两个字段类型为VARCHAR2且有一个有值,另一个字段为空。起初先验证是不是数据类型不是NUMBER不能进行计算,但很快我的想法被否认了,我用to_number对字段进行转换,查询结构依旧为null。接下来就开始验证是不是null在作怪,结果是肯定,当两个值都不为空是可以计算出结果,当有一个是null时,sum()后再相加,最终结果也是null。
OK,问题找到,开始解决问题。
其实解决这个问题的办法也不少,下来一个一个来分析:
第一种方案,修改下数据库字段类型,设置默认值。但是项目已处于后期测试阶段,贸然修改数据结构不太妥,如果是项目初期可以考虑。
第二种方案,庆幸的是oracle有nvl(,0)这个函数,具体作用就是判断字段是不是null,如果是就返回传入的默认值。其实是也就是在sql中获取时设置默认值,这种方式比较符合项目的目前的状况,于是采用这种方法完美解决。
好了,一个小问题已经解决,在这里记录下,看到问题的同学有更好的方法欢迎留言分享。
oracle中nvl函数的更多相关文章
- oracle中nvl()函数
		
oracle中nvl()函数 oracle的nvl函数的使用方法 通过查询获得某个字段的合计值,假设这个值位null将给出一个预设的默认值 select nvl(sum(t.dwxhl),1) f ...
 - oracle中nvl函数用法
		
1.返回两个字段中非空字段的值,第一个字段非空,返回第一个字段的值,第二个字段值为null,则返回第二个字段的值,如果都为null 则返回null. select nvl(a,b) from tabl ...
 - Mysql中类似于oracle中nvl()函数的ifnull()函数
		
IFNULL(expr1,expr2) 如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2.IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境. my ...
 - oracle的nvl函数的使用解析
		
Oracle的Nvl函数 nvl( ) 函数 从两个表达式返回一个非null 值. 语法 NVL(eExpression1, eExpression2) 参数 eExpression1, eExpre ...
 - Oracle中REGEXP_SUBSTR函数(转)
		
Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下:在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','2 ...
 - Oracle中nvl()、instr()、及执行多条sql事务操作
		
Oracle的Nvl函数 nvl( ) 函数 从两个表达式返回一个非null 值. 语法 NVL(eExpression1, eExpression2) 参数 eExpression1, eExpre ...
 - Oracle中REGEXP_SUBSTR函数(字符串转多行)
		
Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下: 在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20',' ...
 - Oracle中REGEXP_SUBSTR函数
		
Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下: 在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20',' ...
 - Oracle 中 decode 函数用法
		
Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译 ...
 
随机推荐
- hdu_1253_胜利大逃亡(bfs+剪枝)
			
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1253 题意:三维BFS,不解释 题解:DFS+剪枝会超时,裸BFS会超时,BFS+剪枝才能AC,有点伤 ...
 - 给EditText设置边框
			
布局文件中加入background属性: <EditText android:layout_width="200dp" android:layout_height=" ...
 - .net简单的静态页生成
			
1.得到实体对象model,读取模板 string htmlMaster = File.ReadAllText(HttpContext.Current.Server.MapPath("/ma ...
 - Qt之Windows开发移植问题汇总
			
来源:http://blog.sina.com.cn/s/blog_a6fb6cc90101auw6.html 在用Qt开发完成项目后,就需要将其打包并且移植在其他机器上,能在其他PC机上正常跑起来才 ...
 - think in uml-关系
			
1.关联关系association 在一段时间内将多个类的实例连接在一起 某个对象在一段时间内一直"知道"另一个对象的存在 2.依赖关系dependency 一个对象的修改会导致另 ...
 - mongodb移除分片
			
MongoDB的Shard集群来说,添加一个分片很简单,AddShard就可以了. 但是缩减集群(删除分片)这种一般很少用到.由于曙光的某服务器又挂了,所以我们送修之前必须把它上面的数据自动迁移到其他 ...
 - NDK编译应用程序
			
Android源码目录下的build/envsetup.sh文件,描述编译的命令 - m: Makes from the top of the tree. - mm: Build ...
 - 解决centos无法上传文件和打开文件夹
			
使用yum搭建了ftp服务..yum的使用参考:http://blog.csdn.net/enson16855/article/details/9140623 windows使用FileZilla连接 ...
 - Hibernate 系列教程3-单表操作
			
工程截图 hibernate.cfg.xml <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Conf ...
 - group_concat()函数总结
			
group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果.比较抽象,难以理解. 通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一组, ...