Sql like语句 - 返回错误的结果

时间:2015-04-20 07:01:12

标签: sql sql-server

我知道标题不好我不知道如何解释。

我有像

这样的表格
Id    AvaibleSports
1     [1]
2     [1]
3     [2],[10]
4     [4],[10]

我知道这不是存储信息的最佳方式,但这就是我现在所拥有的。我需要根据可用的运动价值来过滤行。

例如,当我过滤“1”时,我必须得到记录1和2.当我过滤“10”时,我需要得到3和4。

我试着用这样的声明过滤:

select Id, AvaibleSports FROM myTable wHERE AvaibleSports like '%[10]%'

但这也是返回包含[1]的记录。

我也尝试过滤

select Id, AvaibleSports FROM myTable wHERE AvaibleSports like '%10%'

这将返回10的正确结果,但是错误的结果为1.

如何正确过滤?

1 个答案:

答案 0 :(得分:1)

您可以替代使用CHARINDEX。这样的事情。

DECLARE @table1 TABLE
(Id INT IDENTITY(1,1),
AvaibleSports VARCHAR(10)
)
INSERT INTO @table1(AvaibleSports)
SELECT '[1]' a
UNION ALL SELECT '[1]'
UNION ALL SELECT '[2],[10]'
UNION ALL SELECT '[4],[10]'

SELECT * FROM @table1 WHERE CHARINDEX('[10]',AvaibleSports) > 0