ORACLE内char的参数处理(connection.prepareStatement)
本帖最后由 kevin2000ab 于 2013-02-08 10:43:30 编辑
id char(12) 内有一条记录ad001
实际存放时后面会补7位空格
如果用
where id = 'ad001' 或者
where id = 'ad001 ' 都是可以检索的
但是用
java.util.Collection;
PrepareStatement
带 ?的检索方式就不能得到结果
(void setString(int parameterIndex, String x))
虽然用trim可以解决
但是目前代码量太大 条件里一个个trim的工作量有点受不了
有快速的解决方法吗
PS
在没有其他方面的情况下
trim(id) = ? 破坏索引
最好的解决方案是 id = RPAD(RTRIM(?), 12, ' ')吗
------解决方案--------------------不要用char,用varchar2
alter table t modify(id varchar2(12));
------解决方案--------------------建立一个基于trim(id)的函数索引也可以。
不过更合理的应该是对输出的参数值进行处理,也就是lpad