如何使用SQL生成XML路径(),但保留换行符

6
我有以下代码片段:
select
    (
    select cast(Narrative as Varchar(max)) + char(13) 
    from officeclientledger 
    where ptmatter=$matter$ and ptTrans=4 
    for xml path (''), type
    )

带有以下结果的搜索:

Cwm Taff NHS Trust医疗记录

Dr Purby医疗记录

(排除空格,为了提出问题而需要插入)

然而,是否有一种方法可以提供以下结果:

Cwm Taff NHS Trust医疗记录

Dr Purby医疗记录


你想让回车符在结果网格中呈现,还是在将文本复制粘贴到[插入此处的文本编辑器]时呈现? - James Hill
1
我正在将这段代码直接用于 Word 邮件合并(有点 hacky,我知道),因此没有复制/粘贴阶段。但说实话,我不太确定。 - James Parish
3个回答

7

使用SSMS中的结果网格功能无法完成此操作。但是,如果您使用结果为文本选项,并将CHAR(13)替换为CHAR(10),则可以获得所需的结果。


感谢@Quickfire55 - 使用CHAR(10)缓存CHAR(13)起作用了 :) - James Parish
另外,当您将其设置为文本结果时,请不要忘记在“工具”->“选项”->“查询结果”->“SQL Server”->“结果到文本”中扩展“每列显示的最大字符数”配置。在至少2008R2中,默认设置为256。 - Christiaan Westerbeek

4

我遇到了同样的问题,但不能使用Char(10),因为接收系统需要Char(13)。所以我使用以下查询替换了结果中的值,并且它起作用了。

SELECT Coloumn = REPLACE(@v_Get_UPC_List, '
', CHAR(13)) 

1
当我需要使用SSMS并想要查看所请求的值进行测试时,我会使用打印命令。
IF OBJECT_ID ('tempdb..#doc') IS NOT NULL DROP TABLE #doc;
declare @doc varchar(max);

create table #doc (DOC varchar(max));
    insert into #doc EXECUTE db.[spDocumentJob] 1

SELECT @doc = STUFF(
    (SELECT  ' ' +  DOC + ' ' + CHAR(13) + CHAR(10) 
        FROM #doc As T2
        ORDER BY DOC
        FOR XML PATH (''), TYPE).value('.','varchar(max)'),1,1,'')
print @doc

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接