5
我有一個產品表,其中包含一個名爲'categories'的字段,用於將與產品相關的類別id保存爲逗號分隔值。我正在使用正則表達式從一個類別搜索產品。從PHP中的逗號分隔字符串查找準確值MySQL
假設有含4,24,1,31
我的表情記錄,
..WHERE categories REGEXP ',?4,?'
但這返回4
類別的產品都和24
我只需要只顯示類別4
。
我錯過了什麼嗎?
我有一個產品表,其中包含一個名爲'categories'的字段,用於將與產品相關的類別id保存爲逗號分隔值。我正在使用正則表達式從一個類別搜索產品。從PHP中的逗號分隔字符串查找準確值MySQL
假設有含4,24,1,31
我的表情記錄,
..WHERE categories REGEXP ',?4,?'
但這返回4
類別的產品都和24
我只需要只顯示類別4
。
我錯過了什麼嗎?
使用
WHERE categories REGEXP "(^|,)4(,|$)"
如果用逗號或字符串的開始/結束包圍這符合4
。
在您現在的版本中,兩個逗號都是可選的,所以4
在24
匹配。
爲什麼要保存這樣的關係?你爲什麼不用另一張桌子?我當時是 –
。但是我有很多產品,而且每種產品都與兩個或更多類別相關。所以它使一個巨大的桌子。 – vinu
那麼?這是在數據庫中做正確的方法。現在您必須在巨大的桌面上執行REGEXP,您認爲速度更快嗎? –