Dobry i tani polski hosting Hekko
Kup kurs w Stefa Kursów z linku i otrzymaj 30 zł = 3000 pkt Premium
Chcesz otrzymać kupony na Aliexpress 19 dolarów (dla nowego użytkownika 4 kupony) lub podaj kod w podsumowania koszyka INJFWAPD?
Zwrot z zakupów ze sklepach internetowych (Allegro, MediaMarkt, Aliexpress itp.) sprawdź procent
Nie masz jeszcze konta w Revolut? Załóż i ciesz się dobrym przewalutowaniem i nie tylko
Inwestuj na Mintos wpłać 500 euro i otrzymaj bonus 10 euro - bonus wyższy wraz z wpłatą.
11
Zamiana polskich znaków diakrytycznych na ich odpowiedniki bez kropek, kresek i ogonków w zapytaniu MySQL
Brak komentarzy · Artykuł autorstwa RaVns, kategoria MySQL
Ilość odsłon wpisu: 24 209
Może się zdarzyć, że przydałoby się nam takie rozwiązanie, aby w momencie wykonywania zapytania do bazy MySQL można było porównywać słowa, jakieś znaki, które posiadają w sobie polskie litery z innymi nieposiadającymi narodowych znaków diakrytycznych.
Możliwe również, że zależałoby nam na pozbyciu się lub zamianie polskich znaków na odpowiedniki bez kropek, kresek i ogonków np. podczas SELECT.
Czy usunięcie polskich znaków diakrytycznych i zamiana ich na ogólne/uniwersalne/angielskie odpowiedniki – jak to jest inaczej nazywane.
1. Potrzeby:
1.1. Porównanie dwóch wartości zmiennych, gdzie jedna to:
polska żółta gęś == polska zolta ges
z powyższego porównania efektem będzie false, a chcielibyśmy:
polska zolta ges == polska zolta ges
czyli true.
Gdy otrzymamy true możemy chcieć wypisać pełną nazwę kategorii i inne pola.
1.2. Inne to np. zamiana z:
Rafał potrzebował kiedyś takiej funkcji.
na:
Rafal potrzebowal kiedys takiej funkcji.
2. Funkcja odpowiedzialna za tą zamianę:
CREATE FUNCTION `bez_pl_diakrytycznych`(t TEXT) RETURNS TEXT
BEGIN
SET t = REPLACE(t, 'ą', 'a');
SET t = REPLACE(t, 'Ą', 'A');
SET t = REPLACE(t, 'ć', 'c');
SET t = REPLACE(t, 'Ć', 'C');
SET t = REPLACE(t, 'ę', 'e');
SET t = REPLACE(t, 'Ę', 'E');
SET t = REPLACE(t, 'ł', 'l');
SET t = REPLACE(t, 'Ł', 'L');
SET t = REPLACE(t, 'ń', 'n');
SET t = REPLACE(t, 'Ń', 'N');
SET t = REPLACE(t, 'ó', 'o');
SET t = REPLACE(t, 'Ó', 'O');
SET t = REPLACE(t, 'ś', 's');
SET t = REPLACE(t, 'Ś', 'S');
SET t = REPLACE(t, 'ż', 'z');
SET t = REPLACE(t, 'Ż', 'Z');
SET t = REPLACE(t, 'ź', 'z');
SET t = REPLACE(t, 'Ź', 'Z');
return t;
END
Może nawet nie przypuszczasz, ale tą funkcję wprowadzamy do bazy danych. Zostaje ona tam zapisana i dostępna do edycji. Nie ma potrzeby dodawania jej za każdym razem do zapytania, czy zamieszczania w kodzie PHP.
Jak wprowadzić funkcję do bazy MySQL?
- Logujemy się np. do phpMyAdmin: http://localhost/phpMyAdmin/.
Instalacja phpMyAdmin - Wybieramy bazę danych.
- Klikamy SQL, wprowadzamy funkcję i klikamy wykonaj.
- Wracamy do zakładki Struktura, gdzie poniżej spisu tabel widzimy link: Procedury i funkcje.
- Tutaj możemy edytować, usunąć funkcję lub po słowie RETURNS TEXT dopisać kodowanie: CHARSET utf8.
3. Użycie
Ad 1.1. Przykładowo z paska adresu pobieramy nazwę kategorii, która jest bez polskich znaków przy pomocy GET.
Adres przyjaźnie wyglądający używający reguł w htaccess::
skrywa prawdziwy adres:
więc w PHP przypisujemy wartość zmiennej GET o nazwie nazwa_kategorii do nowej zmiennej:
// czyli: $nazwa_kategorii = polskie-zolte-gesi
Teraz wypisujemy z bazy po nazwie kategorii (tej z adresu) inne pola kategorii: polskie żółte gęsi.
Zastosujemy funkcję zamieniającą polskie znaki na „ogólne” od razu w zapytaniu, pomijając tym samym PHP.
MySQL:
Zakładamy, że w tabeli kategorie nazwy kategorii są unikalne, aby nie było pomyłek,
a poszukiwany wiersz zawiera 4 pola o wartościach: ‚polskie żółte gęsi’, ‚wartość pola1′, ‚wartość pola2′ i ‚wartość pola3′.
W wyniku zostanie nam wypisana: nazwa kategorii, pole1, pole2, pole3.
A stanie się tak, ponieważ zastosowaliśmy funkcję zmieniającą nazwę kategorii zapisaną używając polskich znaków na ich odpowiednik bez diakrytycznych.
Ad 1.2. Funkcję można przetestować, aby zamieniła
żółta gęś ĄąĆćĘꣳŃńÓ󌜯żŹź na zolta ges AaCcEeLlNnOoSsZzZz:
Inne przykłady zastosowania:
——————
Funkcja zaczerpnięta z sieci – MIS.
Tagi: funkcje · MySQL · replace · usunięcie polskich znaków diakrytycznych · zamiana polskich znaków na odpowiedniki bez ogonków · znaki diakrytyczne
Podobne wpisy:
Starszy post << Instalacja Certyfikatu SSL dla domeny