我正在建立一個網站,接受用戶輸入關鍵字和輸出匹配的數據。例如,如果用戶指定關鍵字爲'Restaurant pizza
',那麼我的數據庫應該輸出這樣的記錄。如何將關鍵字與SQL查詢匹配?
我現在的表有一個稱爲category
列,五列從keyword1
命名keyword5
其中包含他們的專業領域,即「比薩」,「雞」或「燒烤」等
但我不知道怎麼樣編寫SQL查詢,因爲用戶可以按照任何順序輸入關鍵字:首先是類別,或者先是專用區域。
所以這樣的查詢一定會返回任何結果(假設用戶輸入「餐廳的比薩」查詢):
SELECT *
FROM message
WHERE category LIKE 'Restaurant pizza'
OR keyword1 LIKE 'Restaurant pizza'
OR keyword2 LIKE 'Restaurant pizza'
我想這將是一個壞主意分裂輸入關鍵字成詞,然後運行中的每一個字數據庫的WHERE子句。但我真的不知道如何實現我的目標。
另外,請你給我一些關於如何在這種情況下建立索引的建議?
你好,你需要在'LIKE'語句中使用'%'例子:SELECT * FROM message WHERE category LIKE'%Restaurant pizza%'OR keyword1 LIKE'%Restaurant pizza%'OR keyword2 LIKE'%Restaurant pizza %' – PKirby 2015-03-19 06:30:50
如果用戶可以按任意順序輸入。然後,您將不得不拆分並在查詢中運行輸入的每個單詞。如果你不想這樣做,你將不得不通知用戶在進入之前按特定的順序進行。它們中的任何一個。不能做他們兩個。 – 2015-03-19 06:32:44
@PKirby,我想你誤解了。在OP中給出的「餐廳比薩餅」的例子中,餐廳將是類別,比薩餅將是關鍵字。 '%Restaurant pizza%'將會尋找那些在同一列中的人。此外,OP還表示可以讓用戶以任何順序輸入,例如「Pizza Restaurant」。 – 2015-03-19 06:36:46