2012-09-24 8 views
5

Mam tabelę produktów, która zawiera pole o nazwie "kategorie", aby zapisać identyfikatory kategorii powiązane z produktami jako wartości rozdzielone przecinkami. Używam regexp do wyszukiwania produktów z kategorii.Znajdowanie dokładnej wartości z ciągu oddzielonego przecinkami w PHP MySQL

Załóżmy istnieje zapis zawierający 4,24,1,31 mój wyraz jest,

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

ale zwraca zarówno iloczyn kategorii 4 i 24

po prostu trzeba wyświetlić tylko kategorię 4.

Czy brakuje mi czegoś?

+2

Dlaczego miałbyś zachowywać takie relacje? Dlaczego nie używasz innego stołu? –

+0

byłem. ale mam wiele produktów i każdy z tych produktów jest powiązany z dwiema lub więcej kategoriami. więc tworzy mały stolik. – vinu

+0

Tak? To jest poprawny sposób robienia rzeczy w bazie danych. Teraz musisz zrobić REGEXP na wielkim stole, myślisz, że to jest szybsze? –

Odpowiedz

7

Zastosowanie

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

Dopasowuje 4 jeśli otoczony przecinkami lub na początku/końca łańcucha.

W twojej obecnej wersji oba przecinki są całkowicie opcjonalne, więc 4 w 24 odpowiada.

Powiązane problemy