0

我在表中有一个列,其中包含示例数据,如下所示:

ServiceTypeIDs
1,9
4

在我的 Where 子句中,我使用以下内容对其进行搜索:

   WHERE
( @ServiceTypes is null or       
   charindex(','+cast(SEP.ServiceTypeIDs as varchar(255))+',',      
   ','+@ServiceTypes+',') > 0)))

如果我的参数@ServieTypes等于'1,9',那么我会得到结果,但是当它是@ServiceTypes = '1'or just时'9',我不会收到任何回复。我被卡住并尝试了上述方法。

exact column looks like below

7
8
2
5
4
7
7
7
7
7
7
1
7
null
6,7
7
6
1
7
null
7
7
7
7
7
8
7
6
1
1
1
6
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
7
1
7
7
1
7
8
7
1
1
2
1
null
7
7
7
7
7
7
7
7
7
7
7
7
7
8
6
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
1
7
7
1
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
1
1
1
1
1,2
1
1
1,2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1,2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
6
7
7
1
8
7
7
7
7
7
7
7
7
7
7
7
2
7
null
null
1
1
1
1
1
7
7
7
1,2
6
7
1
2
1
1
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
5
5
1
1
1
7
7
7
1
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
3
1
9
9
9
9
null
9
1,2
9
9
9
8,9
1,9
1,9
1,9
2,9
1,9
1,9
1,9
1,8
1,9
1,9
9
9
9
9
5
4
3
1
null
1,2,3
6
9
9
9
8,9
9
9
9
1,9
4

1 回答 1

1

你的论点CHARINDEX是相反的。改用这个:

CHARINDEX(','+@ServiceTypes+',', ','+CAST(SEP.ServiceTypeIDs AS VARCHAR(255))+',') > 0

应该注意的是,您的实际问题是糟糕的数据库设计。您永远不应该将列表存储为这样的字符串,而是使用单独的表,每个关联一行。

于 2012-07-27T19:07:44.153 回答