Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wyrażenia regularne
mateuszkrzeszowi...
post 19.09.2003, 16:57:02
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 23.04.2003
Skąd: Mysłowice

Ostrzeżenie: (0%)
-----


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"
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
coolesh
post 19.09.2003, 17:13:02
Post #2





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.09.2003
Skąd: warszawa

Ostrzeżenie: (0%)
-----


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


--------------------
Pozdrawiam
Coolesh
Go to the top of the page
+Quote Post
mateuszkrzeszowi...
post 19.09.2003, 17:20:47
Post #3





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 23.04.2003
Skąd: Mysłowice

Ostrzeżenie: (0%)
-----


Wiem że to się da zrobić, służy do tego REGEXP.
Go to the top of the page
+Quote Post
mateuszkrzeszowi...
post 19.09.2003, 17:31:32
Post #4





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 23.04.2003
Skąd: Mysłowice

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
KaMeLeOn
post 19.09.2003, 17:32:19
Post #5





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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 :?


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
mateuszkrzeszowi...
post 19.09.2003, 17:36:26
Post #6





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 23.04.2003
Skąd: Mysłowice

Ostrzeżenie: (0%)
-----


Co się dziwisz z tym manualem? Po prostu nie umiałem tego rozszyfrować :oops:
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 13:17