2012-09-24 34 views
5

我有一個產品表,其中包含一個名爲'categories'的字段,用於將與產品相關的類別id保存爲逗號分隔值。我正在使用正則表達式從一個類別搜索產品。從PHP中的逗號分隔字符串查找準確值MySQL

假設有含4,24,1,31 我的表情記錄,

..WHERE categories REGEXP ',?4,?' 

但這返回4類別的產品都和24

我只需要只顯示類別4

我錯過了什麼嗎?

+2

爲什麼要保存這樣的關係?你爲什麼不用另一張桌子?我當時是 –

+0

。但是我有很多產品,而且每種產品都與兩個或更多類別相關。所以它使一個巨大的桌子。 – vinu

+0

那麼?這是在數據庫中做正確的方法。現在您必須在巨大的桌面上執行REGEXP,您認爲速度更快嗎? –

回答

7

使用

WHERE categories REGEXP "(^|,)4(,|$)" 

如果用逗號或字符串的開始/結束包圍這符合4

在您現在的版本中,兩個逗號都是可選的,所以424匹配。