SQL LIKE运算符不适用于以逗号分隔的列表

Kal*_*hah 1 sql t-sql sql-server sql-server-2008

这是我的数据:

Column:
8
7,8
8,9,18
6,8,9
10,18
27,28
Run Code Online (Sandbox Code Playgroud)

我只想要包含其中的行8.当我做:

Select * 
from table 
where column like '%8%'
Run Code Online (Sandbox Code Playgroud)

我得到了以上所有,因为它们包含一个8.当我做:

Select * 
from table 
where column like '%8%' 
   and column not like '%_8%'
Run Code Online (Sandbox Code Playgroud)

我明白了:

8
8,9,18
Run Code Online (Sandbox Code Playgroud)

我没有6,8,9,但我需要,因为它有8它.

任何人都可以帮助获得正确的结果?

Ron*_*B.I 8

我建议如下:

SELECT *
FROM TABLE
WHERE column LIKE '%,8,%' OR column LIKE '%,8' OR column LIKE '8,%' OR Column='8';
Run Code Online (Sandbox Code Playgroud)

但我必须说存储这样的数据是非常低效的,例如,索引在这里没有帮助,你应该考虑改变你存储数据的方式,除非你有充分的理由保持这种方式.

编辑:

我强烈建议在问题评论中查看@Bill Karwin的链接:

将分隔列表存储在数据库列中真的那么糟糕吗?

  • 您可以简单地输入“WHERE ',' + column + ',' LIKE '%”,而不是“WHERE column LIKE '%,8,%' OR columns LIKE '%,8' OR columns LIKE '8,%'” ,8,%'` - 可能只是个人喜好...编辑:没关系,看起来其他人已经回答了这个:) (2认同)

Har*_* CO 8

你可以使用:

WHERE ','+col+',' LIKE '%,8,%'
Run Code Online (Sandbox Code Playgroud)

强制性的警告:避免存储清单,坏事等.