2012-10-15 46 views
1

我想在PHP中創建一個小腳本以從MySQL數據庫獲取數據。 在我的數據庫中,「公司」是一個名爲類別的專欄,用於存儲我公司的類別,例如「1 | 2」或「2」。在MySQL中搜索 - 分隔列

現在我想搜索「2」,我的數據庫將返回這兩個條目與「1 | 2」和「2」 - 但這是我的問題。 我試着用LIKE%等,但沒有任何工作,因爲我希望。

有沒有人可以幫助我與我的小PHP腳本?

+0

向我們展示您正在嘗試的查詢...使用LIKE'%2%'應該這樣做... – Brian

+2

使用['RLIKE'](http://dev.mysql.com/doc/refman/5.0 /en/regexp.html) – diEcho

+0

謝謝diEcho。 RLIKE解決了我的問題。 – JoernBernd

回答

-1
SELECT * FROM cat_baza WHERE subsection = ".$row['id']." or subsection LIKE('%|".$row['id']."|%') or subsection LIKE('".$row['id']."|%') or subsection LIKE('%|".$row['id']."'); 
-1

嘗試

SELECT * FROM table 
WHERE category LIKE %2% AND NOT LIKE '%|%' 
-1

試試這個

SELECT * FROM table 
WHERE category='2' OR category LIKE '%|2' OR category LIKE '2|%' 
-1
SELECT * FROM table 
WHERE category REGEXP '.*2.*' 

正則表達式應該工作

2

我相信這是一個壞主意來存儲你的方式類別。 如果您使用LIKE "%2"LIKE "%2%"LIKE "2"聲明來獲得屬於類別「2」的compnaies,那麼您將收到具有類別的公司,例如, 21|12

從公司列表中取走類別會更好。並添加2個新表:類別(id,名稱)和company_category(id,compnay_id,category_id)。這是如何在RDMS中。 但是,如果你有重要的論點,爲什麼你這樣做 - 這是你交易。

在此我建議在另外| -symbol包裝類別獲得|1|2||1|3|23|和使用LIKE "%|2|%"聲明。

我希望這可以幫助你。

+0

正確的做法是創建2個新表,當然。 – regilero