SQL 拆分逗号分隔值并将其与 SSRS 中的多列表值进行比较

SQL to split Comma Separated values and compare it with a multi list value in SSRS

我的 table 中有一个字段,其中有多个原因代码串联在 1 列中。 例如2 条记录

Reason_Codes

Record1: 001,002,004,009,010

Record2: 001,003,005,006

在我的 SSRS 报告中,用户将使用上述原因代码之一搜索数据。例如

请告知如何使用 SQL 或存储过程实现此目的。 非常感谢。

很久以前我就写过这样的博客。可能这会有所帮助:http://dotnetinternal.blogspot.com/2013/10/comma-separated-to-temp-table.html

核心解决方案是将逗号分隔值转换为临时 table,然后对临时 table 执行简单查询以获得所需结果。

如果您只是传递一个原因代码进行搜索,您甚至不需要费心拆分逗号分隔的列表:您只需使用 LIKE 子句,如下所示:

SELECT tb.field1, tb.field2
FROM   SchemaName.TableName tb
WHERE  ',' + tb.Reason_Codes + ',' LIKE '%,' + @ReasonCode + ',%';

尝试以下方法查看:

DECLARE @Bob TABLE (ID INT IDENTITY(1, 1) NOT NULL, ReasonCodes VARCHAR(50));

INSERT INTO @Bob (ReasonCodes) VALUES ('001,002,004,009,010');
INSERT INTO @Bob (ReasonCodes) VALUES ('001,003,005,006');

DECLARE @ReasonCode VARCHAR(5);


SET @ReasonCode = '001';

SELECT tb.ID, tb.ReasonCodes
FROM   @Bob tb
WHERE  ',' + tb.ReasonCodes + ',' LIKE '%,' + @ReasonCode + ',%';
-- returns both rows


SET @ReasonCode = '005';

SELECT tb.ID, tb.ReasonCodes
FROM   @Bob tb
WHERE  ',' + tb.ReasonCodes + ',' LIKE '%,' + @ReasonCode + ',%';
-- returns only row #2