0

我的列 ServicetTypeIDs 包含以下数据。我使用下面的 where 子句来搜索值,假设我的参数 @ServiceTypes = 1,9 它只会在两个 1,9 都存在时返回我的记录。我想返回包含 1、9 或本身具有 1,9 的记录的记录。我的 where 子句不正确。请帮忙

column
1
NULL
9
1
4,7
1,9

 WHERE
( @ServiceTypes is null or       
   charindex(','+SEP.ServiceTypeIDs+',',      
   ','+@ServiceTypes+',') > 0)))
4

1 回答 1

0

如果您需要 '1,9' 选择 ('1','9','1,9') 这是一个简短的条件

where (@ServiceTypes is null) or (','+@ServiceTypes+',' like '%,'+ServiceTypeIds+',%')

但是对于“4,9”,它只选择(“9”)。如果你想为这个掩码获取 ('4,7','1,9','9') 这是条件

where (@ServiceTypes is null) 
      or 
      (','+ServiceTypeIds+',' like ',%'+SUBSTRING(@ServiceTypes,1,charindex(',',@ServiceTypes)-1)+',%')
      or
      (','+ServiceTypeIds+',' like ',%'+SUBSTRING(@ServiceTypes,charindex(',',@ServiceTypes)+1,1000)+',%') 
于 2012-07-30T07:59:13.420 回答