2014-06-11 37 views
0
select col1,col2,col3,col4,col5 from table1 
where (col1 like '%keyword%' 
     or col2 like '%keyword%' 
     or col3 like '%keyword%' 
     or col4 like '%keyword%' 
     or col5 like '%keyword%') 
AND start_date IS NULL 
AND end_date IS NULL 
ORDER BY date_created limit 10; 

我想將上述查詢轉換爲使用MATCH AGAINST函數。像%關鍵字%轉換爲匹配(針對)

+2

請嘗試首先參考本文檔:'http:// dev.mysql.com/doc/refman/5.1/en/fulltext-search.html#function_match'並查看您可以嘗試執行的操作。 。 –

回答

0

我是你的意思。像那樣?但正如@Yohanes Khosiawan所說,你也可以通過你自己諮詢文檔。

SELECT col1,col2,col3,col4,col5 
FROM table1 
WHERE MATCH(col1, col2, col3, col4, col5) AGAINST ('+keyword') 
AND start_date IS NULL 
AND end_date IS NULL 
ORDER BY date_created limit 10; 
+0

注意 在實現這個功能,MySQL使用什麼是有時被稱爲隱含布爾邏輯,其中 +主張並 - 代表不 [無操作]暗示或明示 – user3728625

+0

但是從DOC「+ 「代表」和「,」 - 「代表NOT,」沒有操作員「暗示OR ,但我得到了錯誤的結果集。 – user3728625

+0

根據文檔,'+'意味着指定的單元格必須包含該單詞。如果'keyword'是一個簡單的單詞,那麼代碼應該做你想做的事情,否則,試着把這個模式(關鍵字)包裝到額外的'''中,比如'''短語''',或者提供關於問題或者其他信息的附加信息你現在在 – nozzleman