我有这样一个准备好的语句
stmt = select * from table_name where id IN (?);
一旦我传递了参数,stmt 看起来就是这样
stmt = select * from table_name where id IN ('1,2,3');
执行查询时没有错误。然而,resultset
仅为 id=1
返回。有什么方法可以消除所有这些 ID 的引号/获取 resultset
。
stmt = select * from table_name where id IN (?);
select GROUP_CONCAT(id) id from table ;
if(rs.next()){
stmt.setString(1,rs.getString("id"));
stmt.executeQuery();
}
提前致谢。
最佳答案
不清楚 ID 类型是什么,但我相信您实际上应该准备一个语句,将每个可能的值作为单独的参数:
select * from table_name where id IN (?, ?, ?)
然后将三个参数的三个值相加。这是参数化 SQL 的一个常见问题 - 当您希望能够指定可变数量的值时,您需要改变 SQL。 可能有一种特定于 MySQL 的方式来处理这个问题(比如 table-valued parameters in SQL Server 2008 ),但我不相信有一种通用的 JDBC 方式可以做到这一点。
关于java - 消除mysql n java中准备好的语句中的引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9498356/