业务中需要查询出多行数据的某个字段,然后使用 "," 分隔作为一行数据中的某个值. for xml path 可以完成.
去掉最后一个分隔符可以使用sql的函数处理, 去重的话在java代码中实现较为直观和方便.
//1.去掉最后一个"," 2.去重
private String removeDuplicate(String str){
String[] strArr = str.split(",");
if(strArr.length > 0){
HashSet<String> strSet = new HashSet<>(Arrays.asList(strArr));
String setStr = org.apache.commons.lang3.StringUtils.join(new ArrayList(strSet), ",");
return setStr;
}
return null;
}
关于for xml path 的使用参考:
https://www.cnblogs.com/lgx5/p/6543561.html
另外关于 for xml path 的使用, 其查询出来的值往往会被转成Blob.这样会导致封装到对象的String字段失败. 可以使用cast函数进行转换
cast((SELECT student_name + ','FROM student FOR XML PATH ('')) as nvarchar(100))