首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

ORACLE内char的参数处置(connection.prepareStatement)

2013-02-19 
ORACLE内char的参数处理(connection.prepareStatement)本帖最后由 kevin2000ab 于 2013-02-08 10:43:30 编

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

热点排行