我在使用mysql时无法正确搜索标签。
目前,我正在存储这样的标签-
id | name | tags
======+==========+============================
1 | Pen | pen, pencil, writings, edit
------+----------+----------------------------
2 | Money | currency, penny, dollar
------+----------+----------------------------
3 | Car | suspension, fast
------+----------+----------------------------
当前我正在使用此代码定位 id 1 名称笔(记录1)
SELECT * FROM ____ WHERE tags LIKE '%pen%'
但是我得到了这3条记录,因为-
我只想要记录1,当我搜索关键字pen
答案 0 :(得分:1)
如上所述,请勿将所有标签存储在单列中,请对其进行规范化。例如,您应该具有实体表(包含Pen,Car等),标签表(钢笔,铅笔,便士等)和关系表,它们将在索引的两列中包含两个表的ID。
在当前架构中,您可以从以下位置更改搜索条件:
LIKE '%pen%' to = 'pen' OR LIKE 'pen, %' OR LIKE '% pen, %' OR LIKE '% pen'
。
但是您知道,无论如何这都是丑陋的解决方案。...