2011-02-28 81 views
0

我有一個MySQL程序有狀況:MySQL的字符串轉換爲表達

Where category like CONCAT("%",@category,"%") 

...這正常工作與單一類別。

現在我想與多個類別進行比較,我試圖從PHP(字符串連接)建立字符串,但它不工作(在MySQL程序)。

我怎麼能轉換這個條件來匹配多個樣表達?

+0

請粘貼您嘗試過的字符串連接 – 2011-02-28 17:08:20

+0

您必須解釋如何存儲'category'值 - 看起來像將多個類別單詞放入單個列(我們稱之爲「非規範化數據」 - 不太好) – 2011-02-28 17:08:48

+0

如何http://stackoverflow.com/questions/337704/parameterizing-a-sql-in-clause/337817#337817? – Konerak 2011-02-28 17:09:11

回答

1

假設你的類別欄是這樣的:「貓,狗,大象」;分隔關鍵字。有3個解決方案:

1)最醜陋的解決方案,可能是最糟糕:

WHERE category like CONCAT("%",@category1,"%") 
OR category like CONCAT("%",@category2,"%") 

但對於這個你應該知道你有多少個類別要去查詢。這種方式可能不會工作。

2)如果你可以用full-text search functions來匹配類別字段MyISAM表這將是比第一種選擇更爲快速,整潔。

3)最好的辦法是重新設計表結構有類別和主題項目(之間的關係表,因爲它似乎是一個1-N的關係)

如果你可以提供一些定義(代碼)和有助於理解的數據樣本。