Oracle CHAR(1)多了两个空格

同事就给了两张图

SQL 日志显示 java执行 查询结果为0条 但是同一串SQL 复制到Navicat执行 查到数据了

导致 查询自己的待办任务出不来

头大头大~

还好还截了个页面图片

眼尖看到 taskStatus 多了俩空格

但是 Oracle TASK_STATUS 字段设置的 CHAR(1) 怎么会多出空格…

检查线上数据库 测试服务器的没问题 正式服务器的 类型长度都正确 但是就是每条记录都多了 两个空格 明明是 CHAR(1) 长度限制1 但就是长了

删除字段 重新添加 就正常了

Oracle 给我出两个问题

  1. java 和 Navicat 同语句查询获得的结果不相同
  2. CHAR(1) 怎么会多出俩空格 “0 “ 应该会报错 value too large for column “TASK_STATUS” (ACTUAL:3,MAXIMUM:1)

目前是修改为 VARCHAR2(1) 就不会有这个问题

stackoverflow 也有其他人提出了 CHAR(1) 变成 CHAR(3)的问题 估计是相同问题

https://stackoverflow.com/questions/253971/why-does-char1-change-to-char3-when-copying-over-an-oracle-dblink