我使用以下代码将所有结果连接到一条记录中(用回车符分隔)
SELECT [ConcactColumn] = STUFF((
SELECT CHAR(10) + t.column
FROM #table t
FOR XML PATH('')), 1, 1, ''
)
唯一的问题是,当我需要容纳至少 5,000,000 个字符时,我无法获得超过 43,720 个字符的结果。
我怎样才能实现这个目标?预先感谢您。
最佳答案
SSMS 中字符串的大小是有限的。但 XML 的大小不是
- 右键单击进入查询窗口
- 选项
- 网格中的结果
- 将 XML 设置为“umlimited”
然后试试这个:
SELECT STUFF(
(
SELECT CHAR(13) + CHAR(10) + t.name
FROM sys.objects t
FOR XML PATH(''),TYPE).value('text()[1]','nvarchar(max)'), 1, 2, '')
FOR XML PATH('');
由于 CHAR(13)+CHAR(10)
,我用 STUFF()
删除了 2 个字符。仅对于 CHAR(10)
,您必须将其更改为 ...),1,1,'')
。
如果第一行可能保持空白,您可以不使用 STUFF
SELECT
(
SELECT CHAR(10) + t.name
FROM sys.objects t
FOR XML PATH(''),TYPE
).value('text()[1]','nvarchar(max)')
FOR XML PATH('');
单击 XML,您会看到一个仅受您的机器容量限制的结果...
关于xml - Sql Server 中的东西和 'For Xml Path',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44555198/