TSQL使用逗号分隔的参数比较列中的逗号分隔值

时间:2017-09-29 13:15:00

标签: tsql reporting-services compare contains exists

在我的查询中,我有一个字段Regex.IsMatch(d, @"[^\d-]"),其中包含用分号Keywords

分隔的值列表

在我的SSRS报告中,我的一个参数;包含该@Keywords字段中所有可能的单个值的列表。

  

如何将多值参数Keywords传递给我的查询并检查字段@Keywords是否包含任何选定的参数值?

我有一个拆分功能,可以将Keywords@Keywords划分为各自的关键字项目,但如何在Where语句中执行此检查?

Keywords示例      Keywords

corporate finance; compensation; financial markets示例@Keywords

在这些示例中,Accounting,Accounting and Financial Reporting,Agriculture,airlines,corporate finance,compensation,Offshore drilling,Pharmaceuticals,portfolio,anagement同时包含@Keywordscorporate finance,因此我的报告会显示与示例compensation字段相关联的记录。

只要@Keywords包含Keywords中我们想要该记录的任何值。

1 个答案:

答案 0 :(得分:0)

ResultSet你可能需要将它扩展到你的表选择我只需要一个概念证明来使它工作,Cross apply将帮助你打破值而不需要任何循环或游标或子查询。< / p>

declare @test as table
(
keywords varchar(100)
)
INSERT INTO @test
VALUES ('corporate finance, compensation, financial markets')

declare @keywords varchar(100) ='Accounting,Accounting and Financial Reporting,Agriculture,airlines,corporate finance,compensation,Offshore drilling,Pharmaceuticals,portfolio,anagement'


select i.RecordID as keywords
from @test a
cross apply dbo.ReturnTableOfVarchars(a.keywords) i
INNER JOIN (select * from dbo.ReturnTableOfVarchars (@keywords)) k
ON k.RecordID=i.RecordID

让我知道它是否有效。