假设我有一张这样的表
ITEM
------
id | Name | idCat
-------------------------
1 Bridgestone A 1,5,11
2. Velg 2,3
3. Bridgestone B 12,4
Category
-----------
idCat | Name
--------------
1 Ban
2. Velg
3. Velg Silver
4. Ban Luar
5. Ban dalam
11. Ban Special
然后例如我想搜索Velg .. 我只得到Velg,因为idCat有'2'而我使用LIKE'2%'
但问题是..当我搜索BAn时,idCat是1,我得到了 普利司通A和普利司通B,因为普利司通B有idCat 12,如果我使用LIKE'1%'将匹配它
我的问题是,如何查询以执行仅与“,”分开匹配的搜索。
抱歉我的英文不好答案 0 :(得分:2)
使用FIND_IN_SET()
SELECT *
FROM tableName
WHERE FIND_IN_SET('1', idCat) > 0
你也应该规范化你的桌子。将逗号分隔的值存储在单个字段中是非常糟糕的习惯。
这是一个建议的新架构设计
<强>物品强>
<强>分类强>
<强> Item_category 强>
答案 1 :(得分:0)
使用FIND_IN_SET
select * from ITEM where FIND_IN_SET('2', idCat) > 0