2011-10-03 65 views
0

我運行下面的查詢MySQL的行爲不預期

SELECT * 
FROM wp_posts 
WHERE (post_title LIKE 'Professionally') 
OR (post_content LIKE 'Professionally') 
AND post_type='post' 
AND post_status='publish' 

我知道我有了的postpost_type一排,和publishpost_status以單詞「專業地」開始(複製和粘貼從phpmyadmin)但這個查詢返回沒有結果。

奇怪的是,當查詢成功匹配popst_title時,它按預期工作。

+3

你沒有使用任何通配符。對於「開始」搜索,您需要添加「%」,例如'專業%' –

回答

8

使用LIKE,你爲了做字符串匹配使用%

SELECT * 
FROM wp_posts 
WHERE (post_title LIKE 'Professionally%' 
    OR post_content LIKE 'Professionally%') 
    AND post_type = 'post' 
    AND post_status = 'publish' 

(我還修改了你的包圍,以更好地表達什麼,我認爲你正在嘗試做的。)

+1

另外值得注意的是:'OR'的優先級低於'AND',這意味着查詢將匹配'post_title'以''Professionally'開頭的任何帖子,無論其類型和狀態如何,只有那些輸入「'post'」,狀態爲「publish」,內容以「Professionally」開頭。從SQL和問題來看,在我看來這不是預期的行爲... – Romain