2014-01-06 137 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