PreparedStatement这个类估计都比较熟,我在网上看过一片文章http://cuisuqiang.iteye.com/blog/1480525
但是这里讨论的不是相同问题
我曾在一个sql查询中用到这样一条语句简化后的原理select * from table where field like ?
这本是很简单的一个问题,但是如果是这样的 参数 "2013"也许你在sql server管理工具执行的时候不会有任何错误
等价于select * from table where field ='2013'但是在java中执行,会得到什么样的结果?你会惊讶发现他并非得到相同结果(条件是field的长度不为4且为var* 类型,简单说你用一个char类型的 长度为10的去试试)
经大牛指点去like换= 则没问题,why???
翻到了以前的一个笔记
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
当有如下语句时在Java]中会出现问题
select 'xzqdm2' as clas, Code as id, Name as html from [GB/T2260-2001] where code like ?
ps.setString(sql, "33__");
改成如下即可
ps.setString(sql, "33%");
猜想跟数据库的空格有关
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
大牛让我找到日志并翻译原生sql,这有些难度,各位有方法的请附上不胜感激