在 CHAR 类型列上使用相等谓词的查询没有返回数据

No Data Returned in Query with Equal Predicate on a CHAR Type Column

这是我的代码,我有一个在 oracle 中命名为 Product Id 和数据类型为 CHAR(6 字节)的列。我已为此列使用设置字符串方法从数据库中检索详细信息。实际上我得到的结果集为假(它是空的)并且没有获取记录。但是当我使用 'PRODUCT_ID="+value+"' 时它起作用了。如何解决这个问题..

sSQL="SELECT * FROM CART_VIEW WHERE PRODUCT_ID=? AND  PRODUCT_NAME=? ";
ps=conn.prepareStatement(sSQL);
ps.setString(++i, sProductId);
ps.setString(++i, sProductName);
rs=ps.executeQuery();

列格式CHAR(6)表示(与VARCHAR2格式相反)小于6字节的字符串用空格填充。 IE。您必须提供字符串,并添加尾随空格以达到列的确切长度。

示例,如果您在 XX CHAR(6)

列中插入 'X'
 -- returns nothing
 select * from test where xx = 'X'; 

 -- returns a row
 select * from test where xx = 'X     '; 

即您必须在 setString 中传递全长字符串。