问题描述
我正在使用Microsoft Report Builder 我需要在报告中显示一组数据,这些数据来自以“,”(逗号)分隔的文本字符串。
我有一个需要分开的地方,像这样: 数据1,数据2,数据3 并且我需要在报告中将它们显示为这样(在同一列中)
data1
data2
data3
我的意思是在拆分中为每个项目留一行。
拆分(字段!Data.Value,“,”)(0)
我已经尝试过了,它只显示了位置0的值。 能以某种方式完成吗?谢谢!
解决方法
最好在数据集查询中执行此操作。假设您正在使用SQL Server。那么您可以执行以下操作。
您将需要一个字符串拆分功能。如果使用SQL 2016或更高版本,则可以使用内置函数string_split()
。如果您使用的是旧版本,则可以使用许多功能示例。如果找不到,我可以提供一个。
如果所有数据都位于同一行,则可以执行类似的操作,将@string
替换为表格列。
declare @string varchar(max) = 'Data1,Data2,Data3'
select result = ltrim(rtrim(value)) from string_split(@string,',')
这将给出以下结果
如果您在多行上都有数据,则可以执行类似的操作,但是使用CROSS APPLY
对每一行重复该功能。
这是一个例子
declare @t table (string varchar(max))
insert into @t VALUES
('Data1,Data3'),('DataA,DataB,DataC')
select result = ltrim(rtrim(x.value)) from @t
cross apply string_split(string,') as x
给出以下结果