Na stronach www coraz częściej pojawiają się szukajki, które wyszukują słowo/ słowa kluczowe łącząc się z bazą i zadając odpowiednie zapytanie SQL. Czasem istnieje potrzeba zmodyfikowania zapytania pod określone założenia (np. wyszukiwanie z i bez polskich znaków pojedyńczego wyrazu ) i zapytanie typu:
SELECT name FROM articles as a
WHERE a.`name` LIKE '%{$searchQuery}%'
nie spełnia naszych oczekiwań. Z pomocą przychodzą wyrażenia regularne, które możemy użyć w naszym zapytaniu sqlowym. Należy użyć słówko kluczowe REGEXP a następnie wstawić odpowiednie wyrażenie regularne. Przykładowo chcemy uzyskać w wynikach wszystkich autorów o nazwisku "LEM" (czyli wyrazy "Lemowski" czy "Kotlemowski" nie wchodzą wgrę). Korzystając z REGEXP zapytanie może wyglądać tak:
SELECT surname FROM authors as a
WHERE a.`name` REGEXP '[[:<:]]{$searchQuery}[[:>:]]'
gdzie $searchQuery = "Lem". W wynikach otrzymamy wszystkich autorów o nazwisku Lem. W zapytaniu ciąg znaków [[:<:]] oznacza początek wyrazu, a ciąg [[:>:]] oznacza koniec wyrazu. Pomiędzy początkiem i końcem wyrazu widzimy zmienną, która jest stringiem, w naszym przypadku zawiera wyraz LEM.
Więcej o REGEXP znajdziesz tutaj.
Brak komentarzy :
Prześlij komentarz