![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 97 Pomógł: 0 Dołączył: 10.04.2002 Skąd: Pruszków Ostrzeżenie: (10%) ![]() ![]() |
Witajcie w jednej kolumnie w bazie danych mam pewną tabelę która jest przez serialize przerobiona na string.
I tak wpadłem na pomysł żeby zrobić selekce danych już z poziomu bazy danych. Dlatego mam takie pytanie. czy za pomocą wyrażeń regularnych w mysql określić
ze wartość Solina 800 musi być większa od 0 czyli coś w stylu "Solina 800";i:(.*?); i zmienna wyciagnieta musi byc wieksza od zera. w tym przykladzie solina 800 ma wartosc 8 lub może jest funkcja podobna do explode za pomoca ktorej mógłbym sobie wyciąć co jest za 3-cim srednikiem. W ogole nie mam pomyslu jak to ugryźć. Może ktoś mnie tu naprowadzi na dobrą drogę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Witajcie kombinowałem całą noc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) I udało mi się rozwiązać problem za pomocą takiego zapytania. Może komuś na przyszłość się przyda.
A więc. Chcę wyświetlić wartość dla Solina 800 to: szukam na jakiej pozycji w stringu znajduje się szukane słowo "Solina 800" w moim przypadku słowo zaczyna się od 38 znaku w stringu. mnie interesuje to co się znajduje za po tym stringu a dokladnie po "i:" dlatego jeśli wiem na której pozycji znajduje się słowo Solina 800 (locate) jesli wiemy jak długi jest string Solina 800 (length) i dodamy ta STAŁĄ wartość jaka dzieli nas do wyniku czyli 4 znaki to uzyskamy interesujace nas dane. Oczywiscie Solina 800 w moim przypadku to marametr ktory w miare potrzeb jest zmieniany. Pozdrawiam. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 7 Dołączył: 26.03.2004 Skąd: Opole Ostrzeżenie: (0%) ![]() ![]() |
To takie akrobacje na linie. Baza danych to nie narzędzie do manipulowania danymi na zasadzie "co można wyczarować z danymi z jednego pola" ale potężne narzędzie algebry macierzy pozwalające, strukturyzować, układać, kojarzyć i filtrować dane w oparciu o mechanizmy bazy danych takie jak - pola, tabele, indeksy a nie "wsteczna analiza źle wprowadzonego materiału" (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Choć przyznam, że istotnie często i z takimi problemami trzeba sobie poradzić. Samo szastanie zapytaniami może być trudne, bo mysql nie oferuje tylu narzędzi (to baza danych nie język programowania) co php. Dlatego ja w takich sytuacjach do tabeli dostawiłbym pole (lub kilka) które zawierałoby odpowiednią informację, którą tak żmudnie próbujesz wydobyć w "locie". Wystarczy że napiszesz sobie skrypcik w php, który kolejno przeanalizuje rekordy - jako wyrażenia regularne lub po prostu jako zdeserializowane dane i wynik analizy zapiszesz sobie w stworzonym polu w tabeli. A na przyszłość warto przewidzieć dodatkowe pole - ile to zaoszczędzi czasu (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 12:35 |