Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyrażenia regularne
Forum PHP.pl > Forum > Bazy danych > MySQL
mateuszkrzeszowiec
Mam problem smile.gif. Chciałbym z tabeli pobrać rekord w którym jest pole dajmy na to cosik w ktorym mam ciagi znakow rozdzielone przecinkami. Ciągi znaków między przecinkami mogą być dowolnej długośći. Jak powinno wygladac wyrazenie ktore pobierze na przyklad:
- wyrazenie z trzema przecinkami (licząc od poczatku wyrażenia) - przypominam ze przecinek to znak rozdzielajacy - czyli na przykład "alamakota,akot,maaids,lalala"
natomiast nie pobierze alamakota,akot,maaids,lalala,tralala
Przecinek nigdy nie występuje na początku ani na końcu wyrażenia.

I jeszcze jedno: podaję pierwszy człon wyrażenia i chcę znaleźć rekordy które zawierają ten człon oraz na przykład jeszcze jeden przecinek i ciąg znaków do następnego przecinka. Czyli:
$człon="alamakota";
ma znaleźć alamakota,ipsa natomiast alamakota,ipsa,ipapuzkinierozlaczki odpada.

Oczywiście czytałem dokumentację MySQL tylko że nie potrafię tego zastosować w praktyce. Pomoże również przykład użyca jakiegokolwiek wyrażenia regularnego w SQL, jeżeli moje żądania są zbyt wygórowane winksmiley.jpg

Coś takiego:
Kod
like '".$pierwszyczlon."__'
odpada.

Chodzi mi o kod w SQL'u, w php potrafię sobie z tym poradzić, ale takie rozwiązanie niebałdzo mi się podoba.

Dla leniwych, w manualu dodatek "G MySQL Regular Expressions"
coolesh
nie wiem jak jest w mysql'u ale w sybasie jest cos takiego jak substring. Słuzy to do wyciągania kawałka stringu z jego srodka, ale moim zdaniem obsłużenie wielu przecinków bedzie problematyczne. Chyba najprościej bedzie pobrac cale pole i przetworzyc juz w kodzie aplikacji - a tak swoją drogą to należy postawic pytanie czy wogole to da sie zrobic?questionmark.gif
mateuszkrzeszowiec
Wiem że to się da zrobić, służy do tego REGEXP.
mateuszkrzeszowiec
Hehe, uradziłem! Sory za zaśmiecanie forum, ale może się komuś kiedyś przyda:

[sql:1:a47d82413f]select "cokolwiek,cokolwiek,cokolwiek" REGEXP "^[[:alnum:]]+,[[:alnum:]]+,[[:alnum:]]+$"; //wynik 1
select "cokolwiek,cokolwiek,cokolwiek,cokolwiekinnego" REGEXP "^[[:alnum:]]+,[[:alnum:]]+,[[:alnum:]]+$"; //wynik 0[/sql:1:a47d82413f]

Jakby ktoś to przeanalizował i sprawdził czy ok, byłoby miło winksmiley.jpg
KaMeLeOn
Cytat
[...] Dla leniwych, w manualu dodatek "G MySQL Regular Expressions"

8O
Cytat
Wiem że to się da zrobić, służy do tego REGEXP.

No to do roboty :?
mateuszkrzeszowiec
Co się dziwisz z tym manualem? Po prostu nie umiałem tego rozszyfrować :oops:
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.