mySQL - FIND_IN_SET()找不到值

时间:2016-10-01 17:03:09

标签: php mysql

我试图获取包含特定标签的帖子。

标记行内容

,iphone|1468338028,,android|1468338028,,blackberry|1468338028,

查询

SELECT * FROM shares WHERE FIND_IN_SET(tag, 'iphone') > 0 ORDER BY DATE DESC limit 10

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您的代码为iphone|1468338028,您正在寻找iphone。这不匹配。
|替换为,以分隔值。

SELECT * FROM shares 
WHERE FIND_IN_SET(replace(tag, '|', ','), 'iphone') > 0 

答案 1 :(得分:1)

另一种方法是使用LIKE "%text%",如果您不需要使用FIND_IN_SET()

SELECT * FROM shares 
WHERE tag LIKE "%iphone%"
ORDER BY DATE DESC limit 10

上面的代码片段应达到相同的效果,从而避免更换和修剪问题。