Oracle里查询char类型字段

字段 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(...) = ?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值