CHAR类型列上具有相等谓词的查询中没有返回数据[关闭]
Posted
技术标签:
【中文标题】CHAR类型列上具有相等谓词的查询中没有返回数据[关闭]【英文标题】:No Data Returned in Query with Equal Predicate on a CHAR Type Column [closed] 【发布时间】:2015-07-22 08:42:43 【问题描述】:这是我的代码,我在 oracle 中有一个名为产品 ID 和数据类型为 CHAR(6 字节)的列。我已为此列使用 set string 方法从数据库中检索详细信息。实际上我得到的结果集为假(它有空)并且没有获取记录。但是当我使用 '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();
【问题讨论】:
【参考方案1】: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 完整长度的字符串。
【讨论】:
它适用于轰炸机。您的解释也有助于理解这个概念 @muthu 欢迎您!一般来说,如果你有一个可变长度的键,通常的格式是 VARCHAR2(即使是为了避免这种填充问题)。以上是关于CHAR类型列上具有相等谓词的查询中没有返回数据[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
GlobalMapper精品教程049:空间查询方法(谓词)汇总