sobota, 15 marca 2014

Wyszukiwanie z/bez polskich znaków pojedyńczego wyrazu | MySql

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