在TSQL中生成CRLF以供SSRS接受
在TSQL中,我使用:FOR xml path(“”)将不同的行连接到一个单元格 我在每行后面放置下一个字符以生成换行符。 +字符(13)+字符(10) SSRS会生成换行符,但也会打印这些CRLF字符。 每一行都以:在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隐式时
代码>
有解决方案吗?您使用一个简单的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;”非常感谢。它起作用了。