记录一次Char(8)导致的查询失败问题
数据库记录时间用的格式是char
首先日期是6位长度202002精确到月份,但是char的长度是8位自动补全空格,在用Mybatis查询数据时#{dataTime}时数据查询不出,拿出日志执行SQL去数据库执行是没有问题,替换为 d a t a T i m e 可 以 查 询 出 数 据 。 考 虑 到 S Q L 注 入 的 问 题 不 能 用 {dataTime}可以查询出数据。考虑到SQL注入的问题不能用 dataTime可以查询出数据。考虑到SQL注入的问题不能用
找不出问题所在
在把dataTime = #{dataTime} 替换为trim(dataTime) = #{dataTime} 可以了
总结:在数据库建表时,Oracle建议使用varchar2动态,mysql使用varchar,因为char规定长度后会有空格占位。