proton
21.12.2008, 20:54:06
Witam mam tabele w bazie danych o nazwie, dajmy test która wygląda tak:
id komorka
1 12, 45, 361
2 11, 12, 932
3 983, 99, 1
I chce teraz wyciągnąć te wiersze w których jedna z liczb po przecinku w kolumnie komorka wynosi dajmy 12, czyli w takim przypadku powinien wyciągnąć wiersze o id 1 i 2.
Samo danie warunku WHERE komorka=12 nic nie daje.
piotrooo89
21.12.2008, 20:58:00
LIKE np:
WHERE komorka LIKE '%12%';
proton
5.03.2009, 21:05:45
Odkopuje ten temat gdyż to rozwiązanie okazało się błędne. Otóż owszem wyciąga on rekordy gdzie w komórce występuje liczba 12 ale wyciąga także rekordy gdzie liczba to np. 112, 412 itd. A ja chce żeby wyciągnął tylko tam gdzie jest samo 12.
proton
6.03.2009, 16:19:48
Ten sposób też odapada. Zadziała on tylko jeśli pierwsza liczba to 12 gry w komórce jest 11, 12 to już nie wyciągnie tej danej.
To czemu trzymasz liczby po przecinku...? Efektywniej dla operacji byłoby przechowywanie liczba = rekord, a nie po przecinku, gdyż widzisz, jakie rodzi to problemy.
W Twoim przypadku pozostaje tylko użycie funkcji pobierającą pozycję przecinka, rozdzielenie wg znaków i truncate na dane wartości.
Wyjdzie trochę tasiemcowate zapytanie, ale da się. Zaznaczam tylko, że IMHO najlepiej byłoby przeprojektować strukturę bazy.
seba_bwo
7.03.2009, 08:58:57
WHERE komorka='12' OR komorka LIKE '% 12,%' OR komorka LIKE '% 12' OR komorka LIKE '12, %'
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.