0

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

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

2 回答 2

2

好吧,首先,如果您想进行有效的查询,您应该将这些数字放在单独的表中。字段的匹配部分不能使用任何索引,因此无法很好地扩展。

如果您不能这样做,您将检查分隔符包围的值,因此您必须在字段值之前和之后添加分隔符以进行精确匹配:

where '|' + Field + '|' like '%|' + @number + '|%'
于 2013-02-21T09:12:10.620 回答
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 ...
于 2013-02-21T09:12:01.827 回答