我正在尝试将大量记录ID合并为一个逗号分隔的字符串变量。但是,生成的n / varchar变量始终被截断为4096个字符。
这是我正在尝试的SQL语句 -
DECLARE @docIds varchar(max)
SELECT @docIds = COALESCE(@docIds + ',', '') + CAST(docUid AS varchar(32))
FROM Documents
我找到了许多关于n / varchar(max)截断和连接的其他SO链接,但似乎无法解决上面的查询。我也试过了 -
DECLARE @docIds varchar(max) SET @docIds = ''
SELECT @docIds = @docIds + ',' + CAST(docUid AS varchar(32))
FROM Documents
SET @docIds = STUFF(@docIds, 1, 1, '');
从上述两个查询中,SELECT LEN(@docIds)
最多只返回4096
问题:如何在没有截断问题的情况下将上述检索完成到单个字符串变量中?
答案 0 :(得分:1)
试试这个 -
DECLARE @docIds VARCHAR(MAX)
SELECT @docIds = STUFF((
SELECT ',' + CONVERT(VARCHAR(50), docUid)
FROM dbo.Document
FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'), 1, 1, '')
SELECT @docIds, LEN(@docIds)