1

我有一个带有一堆不同标签和类别的 CMS。我显然将每个类别用作唯一 ID,并将它们保存在数据库中,如下所示:

cats -> 2,15,115
tags -> 13,33,113

这是一个简单的例子。

当我想通过 GET 变量 $cat 显示相关内容以在查询中使用时遇到问题:

WHERE cats LIKE '%$cat%' 

这是挑战,如果 $cat = '5' ,则返回 5, 15, 55, 115... 等等。我只需要它匹配'5'而不是别的!

我确定我错过了一些非常非常简单的东西。

编辑: find_in_set 工作得很好。然而,我的另一个挑战是我的 $GET 变量有时是这样的:$cat = 150,181

那么如何使用变量 $cat 来查看是否只有其中一个匹配项?我想将 150 或 181 与查询匹配?

4

2 回答 2

2

如果您将 LIKE 与通配符“%”一起使用,则您将搜索所有包含“5”的值都放在您的 % 的基础上。

%value%(包含) %value(以值结尾) value%(以值开头)

你可以用like作为相等,根本不用%,但我建议你使用相等运算符(=)

于 2013-07-30T16:22:39.537 回答
2

您可以使用FIND_IN_SET(),因为列cats具有这些值2,15,115

SELECT * FROM tableName WHERE FIND_IN_SET('5', cats) > 0
于 2013-07-30T16:19:28.290 回答