问题:
bit如果长度为1,则会默认为布尔型(1-true 0-false);
bit如果长度大于1,则会默认为bit类型,但是代码中以前常用的两种set方式,会报错
第一种方式: ps.setObject(i+1, obj, Types.BIT);第二种方式:
ps.setByte(i+1, Byte.valueOf((String)obj));
报错内容:
was aborted: 错误: 字段 "bit55" 的类型为 bit, 但表达式的类型为 boolean
Hint: 你需要重写或转换表达式
Position: 1124 Call getNextException to see other errors in the batch.
解决方式:
第一种:含有bit类型的where条件查询:
经查阅,发现这个数据库在处理这个字段缺失存在问题,需要我们转换思想,在进行sql预处理的时候,就对bit字段进行转换: CAST(? as BIT(长度))。
转换的sql也是可以查出值的。
select * from tb3 where bit55= CAST(B'10' as BIT(2))

最低0.47元/天 解锁文章
1405

被折叠的 条评论
为什么被折叠?



