如下所示存储在数据库中的数据,其中category是列名,而逗号分隔的字符串是值。
category = 'cat,cat1,cat2,cat3,cat33,cat4';
我正在尝试从列表中搜索类别:
$query= mysqli_query($mysqli, "SELECT * FROM table where
INSTR(category,'cat3') > 1 ");
但这不起作用,因为结果包括cat3和cat33。
请问我如何进行此搜索?
谢谢!
答案 0 :(得分:3)
您可以使用FIND_IN_SET函数:
SELECT * FROM table where FIND_IN_SET('cat3', category) > 0
但是您应该通过创建 category 表来规范化数据,并将其与表的主键相关联
答案 1 :(得分:0)
"SELECT * FROM table where category LIKE '%cat3,%'";
"SELECT * FROM table where category LIKE '%cat33,%'";
如果您不想在每个类别名称的末尾添加逗号,则
"SELECT * FROM table where category LIKE '%cat3,%' OR category LIKE '%cat3'";
答案 2 :(得分:0)
您可以使用以下查询“解决”此问题。但是我强烈建议您规范化数据库,并仅在确实需要时才使用它
SELECT * FROM table WHERE fild LIKE '%,camp3,%' OR fild LIKE 'camp3' OR field LIKE '%,camp3'