我需要提交查詢以搜索具有特定標籤的帖子。數據庫中的單元格是這樣寫的:「有趣的科技好」,所以每個詞都描述一個標籤。所以我寫了這段代碼,以便獲得帶有「有趣」標籤的帖子。PHP MYSQL:搜索字詞查詢
'SELECT * FROM `posts` WHERE `post_tag` = "funny" ORDER BY `post_id` DESC LIMIT 50'
不幸的是,它沒有給我任何結果。這裏有什麼問題?
我需要提交查詢以搜索具有特定標籤的帖子。數據庫中的單元格是這樣寫的:「有趣的科技好」,所以每個詞都描述一個標籤。所以我寫了這段代碼,以便獲得帶有「有趣」標籤的帖子。PHP MYSQL:搜索字詞查詢
'SELECT * FROM `posts` WHERE `post_tag` = "funny" ORDER BY `post_id` DESC LIMIT 50'
不幸的是,它沒有給我任何結果。這裏有什麼問題?
使用LIKE
關鍵字或以每個標籤1個標籤的方式存儲您的標籤。
SELECT * FROM `posts` WHERE `post_tag` LIKE "%funny%" ORDER BY `post_id` DESC LIMIT 50
然而,這將發現的標籤,有其他標籤包括在內,因此對於「Java」的搜索也會找到「JavaScript的」,
試試這個。
SELECT * FROM `posts` WHERE `post_tag` LIKE "%funny%" ORDER BY `post_id` DESC LIMIT 50'
'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
查詢WHERE post_tag LIKE "%fun%"
也將匹配「搞笑」,「停業」等,但你很幸運,因爲MySQL還支持Perl樣式的正則表達式和你可以說
WHERE post_tag RLIKE "\bfun\b"
(確保sql引擎看到反斜槓)。這隻會匹配「樂趣」作爲一個完整的單詞。
你可以試試WHERE post_tag LIKE'funny%'..這會顯示你的記錄有'有趣'作爲你的標籤中的開始文本 – 2012-02-19 08:11:48