现在有一个需求,select post,case when ... end group by post,这个group by后面 传入参数是集合对象,动态foreach遍历添加group by 条件,如果传入参数不存在days ,如何不执行case when 语句
时间: 2023-05-21 19:04:37 浏览: 149
可以通过在动态拼接SQL语句的时候判断是否存在days参数,如果不存在则不添加case when语句。具体实现可以使用类似于以下的代码逻辑:
StringBuilder selectBuilder = new StringBuilder("select post,");
StringBuilder groupByBuilder = new StringBuilder("group by post, ");
if (paramSet.contains("days")) {
selectBuilder.append("case when ... end ");
groupByBuilder.append("...");
}
// 动态foreach遍历参数列表,添加group by条件
for (String param : paramSet) {
if (!param.equals("days")) {
groupByBuilder.append(param).append(", ");
}
}
// 构造最终的SQL语句
String sql = selectBuilder.append(groupByBuilder.substring(0, groupByBuilder.length() - 2)).toString();
这样可以根据参数列表的情况动态拼接SQL语句,实现不执行case when语句的效果。
阅读全文