mysql在数组中搜索字符串

nkhmeac6  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(410)

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

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

我正在尝试使用列表中的类别进行搜索:

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

但这不起作用,因为结果包括cat3和cat33。
有什么想法我可以做这个搜索,请?
谢谢!

r6vfmomb

r6vfmomb1#

您可以使用“在集合中查找”功能:

SELECT * FROM table where FIND_IN_SET('cat3', category) > 0

但您应该通过创建类别表并与表的主键相关来规范化数据

13z8s7eq

13z8s7eq2#

"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'";

anhgbhbe

anhgbhbe3#

您可以使用下面的查询来“解决”这个问题。但我几乎不建议你规范化你的数据库,只在你真正需要的时候才使用它

SELECT * FROM table WHERE fild LIKE '%,camp3,%' OR fild LIKE 'camp3' OR field LIKE '%,camp3'

相关问题