在CHAR类型的列上没有等于谓词的查询中没有返回数据[关闭]

问题描述 投票:-1回答:1

这是我的代码,我在oracle中有一列称为产品ID,数据类型为CHAR(6字节)。我已经为该列使用了设置字符串方法来从数据库检索详细信息。实际上,我将结果集设置为false(它为空),并且没有获取任何记录。但是当使用'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();
oracle jdbc char prepared-statement resultset
1个回答
3
投票

列格式CHAR(6)表示(与VARCHAR2格式相反)小于6个字节的字符串用空白填充。即您必须在字符串的末尾提供到字符串的确切长度的字符串。

如果在XX CHAR(6)列中插入'X'的示例

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

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

即您必须在setString中传递完整长度的字符串。

© www.soinside.com 2019 - 2024. All rights reserved.