我知道标题不好我不知道如何解释。
我有像
这样的表格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.
如何正确过滤?
答案 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