使用for xml path 查詢出來的字串去重
阿新 • • 發佈:2019-01-03
業務中需要查詢出多行資料的某個欄位,然後使用 "," 分隔作為一行資料中的某個值. 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))