2014-01-06 141 views
1

我有一个参数被传入一个usp,这是一个varchar(max)。此参数类似于以下内容:CharIndex完全匹配?

'1,20,3,40,0' 
'1,5,30,0,5,9' 
'0,50,40,8,9' 
'1,10,2,3,4' 

我需要弄清楚参数在任何地方的值是否仅为0。我打算用:

CASE WHEN CHARINDEX('0',@DispIDs) > 0 
    THEN convert(bit,1) 
    ELSE convert(bit,0) 
END 

但是,这仍然返回真值上像40,30,等我只是想将其标记为真,如果帕拉姆包含0,所以最后的例子将返回false ,其他人将返回true。

回答

2

搜索它包围逗号,和包裹用逗号初始字符串匹配(以覆盖0在字符串的端部):

CASE WHEN CHARINDEX(',0,',',' + @DispIDs + ',') > 0 THEN convert(bit,1) ELSE convert(bit,0) END