2013-05-06 180 views
0

技能領域(串)一樣,字符串搜索

1)php,mysql 
2)java 
3)java,c 

,我需要選擇搭配技巧場條件列我的MySQL領域。條件可能會像,

skills="php" // o/p => 1st column 
or 
skills = "mysql,c" // o/p => 1st and 3rd column 

我如何寫查詢。這裏即時通訊使用PHP。

+0

KarSho,你應用第一個常規表單並在其他表中獲得技能字段的任何變更? – medina 2013-05-06 05:49:17

+0

@medina雅,感謝您的!dea。但是,我完全設計了DB。現在我不能改變。 – KarSho 2013-05-06 05:51:13

回答

2

一種方式做到這一點

SELECT * 
    FROM table1 
WHERE skills LIKE '%mysql%' 
    OR skills LIKE '%c%' 

SQLFiddle

這將是容易得多,如果你歸你的數據

+0

我的搜索條件可能有'n'個內容 – KarSho 2013-05-06 05:53:37

+0

@KarSho你是什麼意思'...有'n'內容'? – peterm 2013-05-06 06:08:37

+0

您可以根據需要添加任意數量的由OR連接的子句。 – 0xCAFEBABE 2013-05-06 06:16:31

1

使用像這樣的一個過程:

Split comma separated values from one column to 2 rows in the results. MySQL

處理行的CSV技術領域分割成一個臨時表中的每個技能

然後做同樣的事情與你的搜索參數(我假設也通過了CSV字符串)

然後簡單地套用一個JOIN兩個結果,並得到DISTICT ID。

有很多解決方案可以在MySQL中分割逗號分隔的字符串(儘管這不是特別擅長此任務)......如果您無法正確地規範化數據,那麼您無法很好地抱怨低效的查詢例程。