在使用 MyBatis 查询 Oracle 数据库时,如果表字段定义为 CHAR
类型,即使数据库中有数据,查询结果也可能返回 NULL
。这是因为 CHAR
类型字段会使用空格填充至定义的长度。例如,如果 CHAR(10)
字段只存储了值 'abc'
,则数据库中实际存储的是 'abc '
,后面用 7 个空格填充。
解决这个问题的方法是在 MyBatis 的 SQL 语句中使用 TRIM
函数去除字段值两端的空格。例如:
SELECT * FROM my_table WHERE TRIM(char_column) = #{charValue}
此外,还可以考虑将数据库表字段类型更改为 VARCHAR2
,它存储的是字符串的实际长度,不会进行空格填充。
暂无评论