用于搜索字符串的SQL CHAR索引

时间:2012-07-30 01:30:18

标签: sql sql-server string sql-server-2008

我在表格中有一个列,其中的示例数据如下:

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'时,我就不会收到任何回复。我被卡住并尝试了上述内容。

2 个答案:

答案 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))+',%')