我将一个参数传递给一个varchar(max)的usp。此参数类似于以下内容:
'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等的值的真值。我只想在param包含0的情况下将其标记为true。所以最后一个示例将返回false,其他示例将返回true。
答案 0 :(得分:2)
用逗号包围搜索它,并用逗号包装初始字符串以匹配(覆盖字符串末尾的0
):
CASE WHEN CHARINDEX(',0,',',' + @DispIDs + ',') > 0 THEN convert(bit,1) ELSE convert(bit,0) END