2 yangyuge1987 yangyuge1987 于 2016.03.31 18:06 提问

oracle 查询问题,???????

现在有一张表A,表中ID字段类型为char(32),现在有一条记录,ID内容为“1111”,现在对该条记录查询,代码如下:
PreparedStatment statment = conn.prepareStatement("SELECT * FROM A WHERE ID='1111'");
这样可以查找到该条记录。
但是,如果使用下面方式:
PreparedStatment statment = conn.prepareStatement("SELECT * FROM A WHERE ID=?");
statment.setString(1,'1111 ');
在传递参数时,需要空格填充字段达到32位,才能查询到记录。
现在,想知道,为什么直接在sql语句中传值,不要用空格填充剩余位数,而使用传递参数,却需要填充空格?

4个回答

herozhangbz
herozhangbz   2016.04.01 11:42
已采纳

修改一下字段属性使用VARCHAR2(10)不会自动填充空格

herozhangbz
herozhangbz 回复yangyuge1987: 感觉你很无奈一样,VARCHAR2(32)跟char(32)都能存储足够位数的字符只是头一个类型的变量长度根据你自己的赋值改变的最多32个,后面那个类型的变量长度始终都是32
一年多之前 回复
yangyuge1987
yangyuge1987 只能这样了
一年多之前 回复
CSDNXIAON
CSDNXIAON   2016.03.31 18:12

oracle关于模糊查询的问题
Oracle查询中很奇葩的问题
一个oracle从子节点向父节点查询的问题
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

daidaineteasy
daidaineteasy   Ds   Rxr 2016.03.31 18:14

statment.setString(1,'1111 ');

这一句 "1111"右边多了一个空格,并且应该用双引号,如下:

statment.setString(1,"1111");

yangyuge1987
yangyuge1987 应该是再加上28个空格才行,不用空格不行啊
一年多之前 回复
shenzhuan7
shenzhuan7   2016.03.31 19:53

不用空格就不可以吗?

yangyuge1987
yangyuge1987 不用空格不行
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!