使用for xml path 查询出来的字符串去重

业务中需要查询出多行数据的某个字段,然后使用 "," 分隔作为一行数据中的某个值. 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))

猜你喜欢

转载自blog.csdn.net/qq_40085888/article/details/85000349