我有一个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行,因为只有那两行具有我需要的确切值.任何人都可以帮我查询?
您可以使用FIND_IN_SET函数:
SELECT id from table WHERE FIND_IN_SET('test', promocode) > 0
Run Code Online (Sandbox Code Playgroud)
注意:
在列中存储以逗号分隔的列表几乎总是在寻找麻烦.请考虑规范化您的数据库.