0

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

ServiceTypeIds
 7,1
 1,9 
 1
 9
 4
 7
 7 

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

WHERE (@ServiceTypes IS NULL 
   OR CHARINDEX(','+CAST(SEP.ServiceTypeIDs as VARCHAR(255))+','
              , ','+@ServiceTypes+',') > 0)))

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

4

2 回答 2

3

我认为你的参数颠倒了:

WHERE (@ServiceTypes IS NULL 
       OR CHARINDEX(','+CAST(@ServiceTypes as VARCHAR(255))+',',
                    ','+SEP.ServiceTypeIDs+',') > 0)))

此方法有效,但仅当您正在寻找一个项目时(或者很幸运,这两个项目恰好在相同的序列中)。

于 2012-07-30T02:04:15.907 回答
0

替代方法

WHERE (@ServiceTypes IS NULL  
   OR ','+@ServiceTypes+',' LIKE '%,'+CAST(SEP.ServiceTypeIDs as VARCHAR(255))+',%') 
于 2012-07-30T05:59:06.590 回答