数字的SQL通配符除以|

时间:2013-02-21 09:07:36

标签: sql sql-server sql-server-2008 wildcard

我将数据保存在一个字段中,如下所示:1 | 3,或1,或1 | 7 | 12。我需要的是WHERE条件,它可以找出我的号码是否存在。此外,如果我的变量“数字”不存在,我必须返回所有结果。我试过这个,但似乎没有用。

Field LIKE '%number%' AND Field NOT LIKE '_number%'

2 个答案:

答案 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 ...