使用COALESCE函数在消息中附加消息

Adi*_*tya 3 sql sql-server

以下是我的代码.

DECLARE @msg NVARCHAR(MAX) = NULL

;WITH CTE AS (
                    SELECT 'A' AS Message
                UNION
                    SELECT 'B' AS Message
                UNION
                    SELECT 'C' AS Message
                UNION
                    SELECT 'D' AS Message
)

SELECT @msg = COALESCE(ISNULL(@msg,'Attachements') + ', ','') +  Message FROM CTE

SELECT @msg + ' are missing.'
Run Code Online (Sandbox Code Playgroud)

它正在产生输出: -

Attachments, A, B, C, D are missing.
Run Code Online (Sandbox Code Playgroud)

我怎么能避免在" Attachments" 之后的第一个逗号?请帮忙.

其他满足要求的技术也是受欢迎的.

谢谢.

Fel*_*tan 5

而不是使用未记录/不支持的串联字符串方式,FOR XML PATH而是使用:

DECLARE @msg NVARCHAR(MAX) = NULL

;WITH CTE AS (
    SELECT 'A' AS Message
    UNION
    SELECT 'B' AS Message
    UNION
    SELECT 'C' AS Message
    UNION
    SELECT 'D' AS Message
)

SELECT @msg = 'Attachments ' + 
    STUFF((
        SELECT ', ' + Message 
        FROM CTE
        ORDER BY Message
        FOR XML PATH(''), TYPE).value('.[1]', 'NVARCHAR(MAX)')
    , 1, 2, ' ')

SELECT @msg + ' are missing.'
Run Code Online (Sandbox Code Playgroud)