Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][MySQL]Pobieranie odpowiednich rekordów z tabeli SQL
Forum PHP.pl > Forum > Przedszkole
casperii
Witam panowie , głupi problem , przejdę do rzeczy.
Jest tabela która załóżmy ma kolumnę blabla a w niej wartości np. :

2,3
2,7
2,10,20
5,10,15
5
2
9

chciałbym pobrać wszystkie rekordy gdzie występuje w kolumnie blabla wartość "2"

  1. SELECT * FROM tabela WHERE blabla IN ('2')


powyższe zapytanie zwraca mi tylko przedostatni rekord gdzie w kolumnie blabla mam tylko wartość 2

oczywiście można by się jeszcze pokusić o poniższe zapytanie:

  1. SELECT * FROM tabela WHERE blabla LIKE '%2%'


ale właśnie znowu pojawia się kolejny problem co w sytuacji gdy będzie wartość 122, 22, 222 itd , będzie chwytać mi ten rekord chociaż nie powinien.
Panowie jakaś podpowiedź ?


trueblue
  1. SELECT * FROM tabela WHERE kol LIKE '2,%' OR kol LIKE '%,2,%' OR kol LIKE '%,2'
nospor
Brakuje jeszcze
OR kol = '2'
wink.gif
trueblue
nospor, racja.

Tak myślę, że ze względu na słabe użycie indeksu w przypadku LIKE (chyba tylko LIKE 'xxx%' - czyli tam gdzie fraza jest na początku, działa jako tako), to można całość uprościć do:

  1. SELECT * FROM tabela WHERE CONCAT(',',kol,',') LIKE '%,2,%'
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.