![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 115 Pomógł: 1 Dołączył: 15.01.2003 Ostrzeżenie: (0%) ![]() ![]() |
Mam taki problem - musze posortowac wyniki wedglug ilosci wystapien danego ciagu...
O ile dobrze pamietam bylo to juz prezentowane na forum lecz nie potrafilem sie tego doszukac - bede wdzieczny za link/odpowiedz. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Wolalbym jednak, zebys wiedzial, wiec postaram sie wytlumaczyc.
Po kolei: 1) REPLACE(text, '$search', SUBSTRING('$search',2) zamieniamy kazde wystapienie szukanego ciagu na dowolny ciag, ktory jest o jeden znak krotszy od szukanego (dlaczego? ano dlatego, ze na kazdym znalezionym wyrazie skracamy caly ciag o jedna litere), ja akurat wybralem substringa (ucinam od drugiego znaku do konca, czyli wynik jest o 1 krotszy niz orginalny wyraz), bo to mi pierwsze wpadlo na mysl i jest chyba jedna z szybszych alternatyw (mozna tez np. REPEAT('*', LENGTH($search)) ale to dluzsze i chyba mniej zrozumiale na pierwszy rzut oka - nie wiem jak z szybkoscia) 2) LENGTH(text) - LENGTH(REPLACE(text, '$search', SUBSTRING('$search',2))) mierzymy ilosc liter w orginalnym tekscie, potem ilosc liter w tekscie z wyzej opisana podmiana odejmujemy to od siebie i jest wynik ![]() Dlaczego? to juz pisalem wczesniej, kazde wystapienie szukanego ciagu "zbiera" jedna literke, wiec ilosc zabranych literek jest rowna ilosci wystapien danego ciagu, jasne? ![]() -------------------- Brak czasu :/
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 15:25 |