我需要提交查询以搜索具有特定标记的帖子。数据库中的单元格是这样写的:“有趣的技术好”所以每个单词都描述一个标签。所以我已经编写了这段代码,以便获得一个带有“有趣”标签的帖子。
'SELECT * FROM `posts` WHERE `post_tag` = "funny" ORDER BY `post_id` DESC LIMIT 50'
不幸的是,它没有给我任何结果。这里有什么问题?
答案 0 :(得分:1)
使用LIKE
关键字或以每个条目1个标签的方式存储您的代码。
SELECT * FROM `posts` WHERE `post_tag` LIKE "%funny%" ORDER BY `post_id` DESC LIMIT 50
然而,这会找到包含其他标签的标签,因此搜索“java”也会找到“javascript”,
答案 1 :(得分:1)
查询WHERE post_tag LIKE "%fun%"
也会匹配“搞笑”,“失效”等等。但是你很幸运,因为MySQL也支持perl风格的正则表达式,你可以说
WHERE post_tag RLIKE "\bfun\b"
(确保sql引擎看到反斜杠)。这只会将“有趣”与完整的单词相匹配。
答案 2 :(得分:0)
试试这个。
SELECT * FROM `posts` WHERE `post_tag` LIKE "%funny%" ORDER BY `post_id` DESC LIMIT 50'
答案 3 :(得分:0)
'SELECT * FROM `posts` WHERE `post_tag` LIKE "%funny%" ORDER BY `post_id` DESC LIMIT 50'
//OR to get tags starting with funny
'SELECT * FROM `posts` WHERE `post_tag` LIKE "funny%" ORDER BY `post_id` DESC LIMIT 50'
参考:LIKE