字段 factorType char(10)将"abc" 存进去 ,用select * from tab wherefactorType = 'abc' 可以检索出数据
而用 select * from tab where factorType = ' abc' 却检索不出来
而 select * from tab where factorType = 'abc ' 这个可以查出来
原因是
CHAR列的长度固定为创建表时声明的长度。长度可以为从0到255的任何值。当保存CHAR值时,在它们的右边填充空格以达到指定的长度。 当检索到CHAR值时,查询的值和被查询的值 尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。 |
一个问题:怎么用hibernate查询语句去查询oracle中含有char类型的字段?
答:char是定长,所以存进数据库时如果位数不够的话会自己在后面补上空格。这时,我们在java里查询的时候从数据库里,要先用rtrim函数把右边的空格去掉。如果我们是在plsql里写语句的话它会自动帮我们把右边空格去掉。
如:select * from tab where rtrim(...) = ?