偶然遇到一个问题,把mybatis查询的sql复制到plsql上去执行可以查询出数据,唯独在程序中查询不到数据。百思不得其解。
没办法,需要解决问题。看了看表结构,发现对应的条件列居然是char类型的,长度为12。而查询的条件却只有4位长度。并且表中的数据最少长度4位,最大的6位。猜测可能是char类型自动补全长度。
接下来就是验证这个猜测。直接通过length()函数计算那一列的长度,居然是12位,但是plsql查询出来的数据却只有4位或者6位。
于是参考https://blog.csdn.net/gnail_oug/article/details/77163424这篇文章,发现没有解决。对应的oracle数据库版本如下:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
"CORE 11.2.0.4.0 Production"
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
最后零时解决办法用空格补齐长度。后期再修改表结构