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和空的区别,在使用内置函数时一定要清楚参数的类型。

DB2LOAD 是 IBM DB2 数据库的一个命令行工具,用于将外部数据文件快速导入到 DB2 数据库,相比 DB2Import,DB2LOAD 的导入速度更快,支持更多的数据格式和选项。 以下是使用 DB2LOAD 的基本步骤: 1. 准备数据文件:将要导入的数据保存为文本文件,并按照 DB2LOAD 要求的格式进行编写。DB2LOAD 支持多种数据格式,如 DEL(分隔符分隔的文本文件)、IXF(DB2 数据库导出文件)、ASC(ASCII 格式文本文件)等。 2. 创建目标表:使用 DB2 控制台或命令行创建一个空的目标表,与数据文件的数据字段对应。 3. 编写控制文件:创建一个文本文件,指定数据文件的路径、格式、分隔符等信息,以及要导入数据的目标表名和字段名等信息。具体格式可以参考 DB2 官方文档。 4. 运行 DB2LOAD 命令:在命令行输入类似于以下的命令: ``` db2 load from controlfile ``` 其,controlfile 是控制文件的路径和名称。 5. 等待导入完成:DB2LOAD 会根据控制文件的信息自动读取数据文件并将数据逐行插入到目标表,导入完成后会显示导入的行数和花费的间。 注意事项: - DB2LOAD 的控制文件必须以 ASCII 编码保存,否则可能导致文乱码等问题。 - DB2LOAD 支持多种选项和标志,可以通过 db2 load --help 命令查看文档了解更多信息。 - 在使用 DB2LOAD 导入大量数据,建议先将目标表的约束和索引等对象删除,导入完成后再重建这些对象,以提高导入速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值