SQL Query获取具有逗号分隔值的行

rag*_*999 0 mysql sql

我有一个SQL表,其中包含这样的行

--------------------
 id   promocode
--------------------
 1    test,test2
 2    test,test3
 3    test2,test3
Run Code Online (Sandbox Code Playgroud)

现在我想在'promocode'列中选择值为'test'的行.
我用的时候

SELECT id from table WHERE promocode LIKE 'test'
Run Code Online (Sandbox Code Playgroud)

它返回所有行,因为所有行都包含字符串'test'.但我只想要1和2行,因为只有那两行具有我需要的确切值.任何人都可以帮我查询?

VMa*_*Mai 6

您可以使用FIND_IN_SET函数:

SELECT id from table WHERE FIND_IN_SET('test', promocode) > 0
Run Code Online (Sandbox Code Playgroud)

演示

注意:

在列中存储以逗号分隔的列表几乎总是在寻找麻烦.请考虑规范化您的数据库.