我尝试获取包含特定标记的帖子。mySQL - FIND_IN_SET()找不到值
标签行内容
,iphone|1468338028,,android|1468338028,,blackberry|1468338028,
查询
SELECT * FROM shares WHERE FIND_IN_SET(tag, 'iphone') > 0 ORDER BY DATE DESC limit 10
什么是做了正确的方法是什么?
我尝试获取包含特定标记的帖子。mySQL - FIND_IN_SET()找不到值
标签行内容
,iphone|1468338028,,android|1468338028,,blackberry|1468338028,
查询
SELECT * FROM shares WHERE FIND_IN_SET(tag, 'iphone') > 0 ORDER BY DATE DESC limit 10
什么是做了正确的方法是什么?
您的标签为iphone|1468338028
,您在寻找iphone
。那不匹配。
用,
替换|
以区分这些值。
SELECT * FROM shares
WHERE FIND_IN_SET(replace(tag, '|', ','), 'iphone') > 0
谢谢,那就是我在想什么。一个问题,如果有一个空的空间,它会产生问题吗? –
我会说是的,这是一个问题。尽量避免这种情况。 –
我不能在查询中使用trim()吗? –
另一种方法是使用LIKE "%text%"
,如果你不使用FIND_IN_SET()
要求。
SELECT * FROM shares
WHERE tag LIKE "%iphone%"
ORDER BY DATE DESC limit 10
上面的代码应该达到相同的,从而避免了更换和修整的问题。
实际的问题是你的餐桌设计。你可以改变它吗? –
不幸的是,没有。你能解释更多吗? –
你的标签是'iphone | 1468338028',你会找'iphone'。这不符合 –