db2 sum 统计_DB2中SUM方法使用时需要小心

在开发项目中遇到一个问题,当数据库字段存在空字符串而非NULL值时,SQL求和函数会引发错误。通过研究发现DB2中的NULL和空字符串在函数处理上有不同。为解决这个问题,修改了SQL语句,使用CASE WHEN语句对空字符串做条件判断,确保在求和前转换为空值。这个经验强调了在使用数据库内置函数时理解参数类型的必要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近开发的一个项目中有一个页面需要对页面表格中所有考核得分列进行求和,然后显示到页面下方。我开始想的很简单,到数据库中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和空的区别,在使用内置函数时一定要清楚参数的类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值