首页 > 解决方案 > 使用 Prepared Statement 从列大小为 char[2] 的 Oracle 数据库中获取结果

问题描述

我在我的 java 代码中使用 Prepared Statement 从 Oracle 数据库中获取结果。我表中的字段 (x) 之一是 char(2)。对于这个字段,我传递的参数如下:

setString (1, "1") 

但是在这种情况下,查询不会返回任何结果。该表具有 x=1 的行。如果我硬编码查询中的值,我也会通过我的代码获得结果,例如

select * 
from abc where x=1

只有当 x 的长度为 1 时,我才会遇到这个问题。例如 setString(1, "47"),在我的 java 代码中返回正确的值,这些值与数据库中 x=47 的行匹配。

如果我在 1 之后传递setString(1, "1 ")一个空格,我会得到正确的值。但是setString(1, " 1"),即 1 之前的空格,不给出任何值。

如果这是 Prepared Statement 的已知问题,或者我做错了什么,请指导我。我该如何解决这个问题。

标签: javaoracle

解决方案


推荐阅读