在TSQL中生成CRLF以供SSRS接受

在TSQL中生成CRLF以供SSRS接受,tsql,reporting-services,encoding,newline,xml-entities,Tsql,Reporting Services,Encoding,Newline,Xml Entities,在TSQL中,我使用:FOR xml path(“”)将不同的行连接到一个单元格 我在每行后面放置下一个字符以生成换行符。 +字符(13)+字符(10) SSRS会生成换行符,但也会打印这些CRLF字符。 每一行都以: 有解决方案吗?您使用一个简单的FOR XML路径(“”)(为了执行类似STRING\u AGG())生成的XML将把任何禁止的字符(如和&等)转换为相应的实体。实体是&abc,而abc代表字符(如),或者您可以看到某种十六进制或unicode码点。这是在创建XML隐式时

在TSQL中,我使用:FOR xml path(“”)将不同的行连接到一个单元格 我在每行后面放置下一个字符以生成换行符。 +字符(13)+字符(10) SSRS会生成换行符,但也会打印这些CRLF字符。 每一行都以:


有解决方案吗?

您使用一个简单的
FOR XML路径(“”)
(为了执行类似
STRING\u AGG()
)生成的XML将把任何禁止的字符(如
和&
等)转换为相应的实体。实体是
&abc
,而abc
代表字符(如
),或者您可以看到某种十六进制或unicode码点。这是在创建XML隐式时完成的。从这个XML中读取某些内容将执行反向过程——同样是隐式的

但是:您的代码不会将结果作为本机XML类型返回

尝试以下操作(最好将输出切换为“文本”):

返回

sysrscols
sysrowsets
sysclones
sysallocunits
sysfiles1
sysrscols
sysrowsets
sysclones
sysallocunits
sysfiles1
但如果将XML作为类型化结果处理,则可以使用
.value()

返回

sysrscols
sysrowsets
sysclones
sysallocunits
sysfiles1
sysrscols
sysrowsets
sysclones
sysallocunits
sysfiles1
您没有显示任何代码,但我假设您有

SELECT  SomeColumn
      ,(SELECT blah + CHAR(13) + CHAR(10) 
        FROM SomeInnerTable 
        WHERE SomeCondition 
        FOR XML PATH('')) AS SomeAlias
FROM SomeOuterTable;
将此更改为

SELECT  SomeColumn
      ,(SELECT blah + CHAR(13) + CHAR(10) 
        FROM SomeInnerTable 
        WHERE SomeCondition 
        FOR XML PATH(''),TYPE).value('.','nvarchar(max)') AS SomeAlias
FROM SomeOuterTable;

上面印着:“和#x0D;”非常感谢。它起作用了。