![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 2.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam pewien problem z wyrażeniem regularnym w zapytaniu do bazy. W bazie mam produkty które nazywają się zawsze w podobny sposób, np.: stół drewniany MAX, taboret drewniany MINI. Właściwa nazwa produktu zawarta jest zawsze w 3 wyrazie. Próbuję stworzyć katalog produktów - po wyborze danej litery nastąpi wyszukanie w bazie danego produktu. I tutaj pojawia się problem - chciałbym aby zapytanie było skonstruowane tak, aby po wyborze litery M wyszukane zostały produkty których pierwsza litera trzeciego słowa rozpoczyna się na M. Próbowałem w ten sposób: REGEXP '^[.*][:space:][.*][:space:]$firstletter(.*)' gdzie $firstletter to zmienna przechowująca pierwszą literę. Niestety nie działa. Nie byłoby problemu gdybym wyszukiwał po pierwszej literze całego ciągu - z tym sobie poradzę, chodzi jednak o pierwszą literę 3 wyrazu... Od razu mówię że rozwiązanie w PHP za pomocą rozbicia ciągu na tablicę odpada. Będę bardzo wdzięczny za pomoc. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Regexpy w zapytaniach do bazy danych to bardzo zły pomysł. Zastanów się np. nad dodaniem nowej kolumny, do której podczas dodawania nowego / edycji starego rekordu będziesz zapisywał 3. wyraz (lub którykolwiek, po którym będziesz wyszukiwał). Zwykły LIKE na kolumnie z założonym indeksem jest dużo lepszym pomysłem.
A jeśli chodzi o doraźne rozwiązanie:
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 01:58 |