Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MySQL - problem z wyrażeniem w REGEXP
Forum PHP.pl > Forum > Bazy danych
moderninternet
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.
sowiq
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:
  1. REGEXP '^([^ ]+ ){2}M'
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.