MySQL搜索数组中的字符串

时间:2018-07-23 22:02:26

标签: php mysql mysqli

如下所示存储在数据库中的数据,其中category是列名,而逗号分隔的字符串是值。

category = 'cat,cat1,cat2,cat3,cat33,cat4';

我正在尝试从列表中搜索类别:

$query= mysqli_query($mysqli, "SELECT * FROM table where
INSTR(category,'cat3') > 1 ");

但这不起作用,因为结果包括cat3和cat33。

请问我如何进行此搜索?

谢谢!

3 个答案:

答案 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'