DB2中SUM方法使用时需要小心

        最近开发的一个项目中有一个页面需要对页面表格中所有考核得分列进行求和,然后显示到页面下方。我开始想的很简单,到数据库中select  sum(该字段)即可。写好后大概运行了一下很正常,查询语句将符合条件的记录中该字段的内容求和,并显示到页面上。过了一天,修改其他bug时,发现点击某条记录查看时页面报错,显示db2数据库-420号错误代码。查了一下,意思是“字符串自变量值不符合函数的要求”。仔细到数据库中查看发现,如果该字段是NULL时,运行正常,但是如果页面上用户没有输入考核得分字段,直接保存,数据库中该字段变成空而不是NULL。错误原因就出在这儿。知道了原因着手开始想办法,我的方法是在SQL语句中对字段值先进行判断,再执行。

String sql = "select " +
		"   sum( case when em_performance_plan_detail.eppd_leader_grade = '' then 0" +
		"   else em_performance_plan_detail.eppd_leader_grade end) as eppd_plan_value," +
		"   sum( case when em_performance_plan_detail.eppd_plus_point = '' then 0" +
		"   else em_performance_plan_detail.eppd_plus_point end ) as epp_measure_unit "+
		"from "+
		"    em_performance_plan_detail "+

      从这个问题中了解了DB2中NULL和空的区别,在使用内置函数时一定要清楚参数的类型。

你可能感兴趣的:(Java)