用数据库查询总和、平均数,在后台调用该数据库查询语句用int或float接收,如若数据库中未查询到符合条件的数据时,后台调用会出现类型不匹配的错误。SQL语句如下:
<!-- 班级已评平均分 -->
<select id="average" resultType="float" parameterType="String">
select AVG(es_score) from situation where
es_course_no = #{es_course_no} and es_student_no
in (select s_no from student where s_class = #{s_class});
</select>
原因是当该SQL语句未查询到符合条件的数据时,返回查询的平均数AVG(es_score)的结果为null,而我们想要的时当没有数据进行计算时,平均数的值应该返回0。
解决办法: 在MySQL的SQL语句中判断AVG(es_score)是否为null,如果为null,则设为0,写法: ifnull(AVG(es_score),0)
<!-- 班级已评平均分 -->
<select id="average" resultType="float" parameterType="String">
select ifnull(AVG(es_score),0) AS AVERAGE from situation where
es_course_no = #{es_course_no} and es_student_no
in (select s_no from student where s_class = #{s_class});
</select>