1. 程式人生 > >使用for xml path 查詢出來的字串去重

使用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))