小编典典

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

sql

下面是我的代码。

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.'

它正在生成输出:-

Attachments, A, B, C, D are missing.

我如何避免在单词“ Attachments”之后出现第一个逗号?请帮忙。

满足要求的其他技术也将受到欢迎。

谢谢。


阅读 158

收藏
2021-05-30

共1个答案

小编典典

不要使用未记录/不受支持的字符串连接方式,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.'
2021-05-30