sql 源代码:
SELECT
g.jglbmc,
t.level1,
g.jglbbm,
SUM(t.num) jglbNum
FROM
tydm_static_model_y t,
dm_jglb g
WHERE
t.level2 = g.jglbbm
AND t.level1 = '8'
AND t.time_n <= '2021-09'
<if test="params.count_type != null and params.count_type != ''">
AND t.count_type = #{params.count_type}
</if>
GROUP BY
g.jglbmc,
t.level1,
g.jglbbm
ORDER BY
g.jglbbm
Navicat 执行结果:
项目启动后,查看 mybatis 运行日志,查询结果为 null。
问题根源
1、t.count_type 字段的类型为 CHAR(4) 导致,由于不满足4个长度会自动补,导致查不到;
2、检查数据库中的数据本身是否存在空格;
解决方式:使用 trim() 函数
SELECT
g.jglbmc,
t.level1,
g.jglbbm,
SUM(t.num) jglbNum
FROM
tydm_static_model_y t,
dm_jglb g
WHERE
t.level2 = g.jglbbm
AND t.level1 = '8'
AND t.time_n <= '2021-09'
<if test="params.count_type != null and params.count_type != ''">
AND TRIM(t.count_type) = #{params.count_type}
</if>
GROUP BY
g.jglbmc,
t.level1,
g.jglbbm
ORDER BY
g.jglbbm