星期二, 4月 02, 2024

[SQL] 群組字串連結 - 換行符號

在 VFP AP 端有個備註欄位讓使用者進行輸入,使用者輸入時有使用到換行,導致使用 for xml path 來群組字串時,報表出現換行符號,如下圖


Product 環境 SQL Server 升級後,有 STRING_AGG 可以取代使用,但還是特別去查 for xml path 要如何避免該問題,從 Handling special characters with FOR XML PATH(”) 內查到解決方式,沒有特別去深入研究,單純紀錄而已

以 [SQL] 群組字串連結 文章內範例來示意並記錄,語法修正如下
SELECT
    Date AS 日期,
    DATENAME(dw,Date) AS 星期 ,  
    (
        STUFF
        (
            (
                SELECT ',' + EmpName 
                FROM Leave T2
                WHERE T2.Date = T1.Date
                FOR XML PATH('')  , ROOT('StringAgg') , TYPE -- 重點
            ).value('/StringAgg[1]' , 'varchar(max)')        -- 重點
        , 1 , 1 , '' 
        )
    ) AS [請假人員]
FROM Leave T1
GROUP BY Date

希望未來沒有機會再使用 for xml path 來進行群組字串

沒有留言:

張貼留言