请问怎么转换这句SQL语句啊?

来源:百度知道 编辑:UC知道 时间:2024/06/14 14:04:56
SELECT 入库单编号, 入库日期, 商品名称, 型号, 数量, 进价, 售价, 供应商名称, 仓库名称, 是否已确认 FROM 入库单据 Where (商品名称 Like '%'+?+'%')and(型号 Like'%'+?+'%')and(仓库名称 Like '%'+?+'%')and(入库日期>=?)and(入库日期<=?) --------- 后面的“?”出错,怎么办呀?

你是java里使用的预处理占位符吧.!

最后面的
and(入库日期>=?)and(入库日期<=?)
不能这样写.会造成语法错误! 要用到具体的变量代替就行了.

要用连“+”接符来表示.。
改成:
and(入库日期>=变量1)and(入库日期<=变量2);

---补充
注意,"?"占位符, 不能代表int的.!只能代替varchar型的.。

如果是在Java中,你这个是一个用于PreparedStatement的拼SQL语句的String,那么你要对?号位置设置相应的值,如:
==============================================
Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
String sql="SELECT 入库单编号,入库日期,商品名称,型号,数量,进价,售价,供应商名称,仓库名称,是否已确认 FROM 入库单据 Where (商品名称 Like '%'+?+'%')and(型号 Like'%'+?+'%')and(仓库名称 Like '%'+?+'%')and(入库日期>=?)and(入库日期<=?) ";
PreparedStatement pstm = conn.preparedStatement(sql);
pstm.setString(1,"第一个?号位置处要设置的查询变量");
pstm.setString(2,"第二个?号位置处要设置的查询变量");
pstm.setString(3,"第三个?号位置处要设置的查询变量");
pstm.setDtae(4,第四个?号位置处要设置的查询变量,是一个日期Date类型);
ResultSet rs = pstm.execu