我在表格中有一个列,其中的示例数据如下:
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'时,我就不会收到任何回复。我被卡住并尝试了上述内容。
答案 0 :(得分:3)
我认为你的参数已被颠倒过来了:
WHERE (@ServiceTypes IS NULL
OR CHARINDEX(','+CAST(@ServiceTypes as VARCHAR(255))+',',
','+SEP.ServiceTypeIDs+',') > 0)))
此方法有效,但只有当您正在寻找一个项目时(或者很幸运且这两个项目恰好在同一序列中)。
答案 1 :(得分:0)
替代方法
WHERE (@ServiceTypes IS NULL
OR ','+@ServiceTypes+',' LIKE '%,'+CAST(SEP.ServiceTypeIDs as VARCHAR(255))+',%')