请教一个简单却又很烦的和Java相关的数据库问题
在数据库中如果采用char类型的数据,使用jdbc或者ejb数据持久化方式时,如果在前台输入信息,信息长度不够数据库中定义的长度,他们不会自动补空格,结果造成查询不到数据.有没有什么比较好的办法解决这个问题,难道要让我找出数据库结构自己去补空格:).
请各位说一下自己的经验.
在数据库中如果采用char类型的数据,使用jdbc或者ejb数据持久化方式时,如果在前台输入信息,信息长度不够数据库中定义的长度,他们不会自动补空格,结果造成查询不到数据.有没有什么比较好的办法解决这个问题,难道要让我找出数据库结构自己去补空格:).
请各位说一下自己的经验.
你使用数据库的like查询?
一般尽量回避这种方式。
select * from tbl_a where trim(col_a)= '?'
但这样会屏蔽掉col_a上的索引,如果要使用索引,建立一个函数索引
BTW:是oracle吧
改变一下数据库的字段类型就可以了啊,因为如果要存入的是可变长度的数组,为什么不把数据库的字段类型设成nvchar?
不管是不是like语句啊
我用的是Oracle,有的字段要跟以前的系统保持一致,所以没有用varchar,可是Oracle的jdbc驱动程序居然不会根据数据类型补空格(存在Oracle中的数据不满长度有空格,输入的数据没空格)
我也遇到这个问题,是在没办法。
cmp他不会加trim()也没有用like.
如用类型为char(20)的列作主键,findByPrimaryKey里面会用到
这种查询
|
直接用preparedStatement也是一样
|
而使用
|
------------
我的数据库是从db2移植过去的(到oracle)。用wsad开发。
生成oracle的deploy code
结果所有的原来是char类型的字段的表都查寻没有结果
这算是jdbc的问题还是wsad的问题呢?