我将数据保存在一个字段中,如下所示:1 | 3,或1,或1 | 7 | 12。我需要的是WHERE条件,它可以找出我的号码是否存在。此外,如果我的变量“数字”不存在,我必须返回所有结果。我试过这个,但似乎没有用。
Field LIKE '%number%' AND Field NOT LIKE '_number%'
答案 0 :(得分:2)
好吧,首先,如果你想进行有效的查询,你应该将这些数字放在一个单独的表中。匹配字段的一部分不能使用任何索引,因此它不能很好地扩展。
如果你不能这样做,你会检查分隔符包围的值,所以你必须在字段值之前和之后添加分隔符才能完全匹配:
where '|' + Field + '|' like '%|' + @number + '|%'
答案 1 :(得分:0)
select (case when (Field LIKE '%|' + cast(number as varchar(32)) + '|%' or Field LIKE cast(number as varchar(32)) + '|%' or Field LIKE '%|' + cast(number as varchar(32)) or cast(number as varchar(32)) = Field) then cast(number as varchar(32)) else Field end)
from ...