Jak za pomocą MySQL wygenerować slug-i

  • Start
  • Blog
  • Jak za pomocą MySQL wygenerować slug-i
15-09-2017

Kiedy z poziomu bazy danych chcemy aby dana kolumna była odwzorowana w innej ale z zamianą polskich znaków na ich odpowiedniki bez ogonów aby wykorzystać je w url-u to przyda nam się podana funkcja.

Poniższy przykład pobiera z kolumny name wartość i wyrzucając z niej niedozwolone znaki wstawia do kolumny slug. Tak więc za pomocą 2 zapytań możemy wygenerować url-e do podanych tekstów.

UPDATE [tabela] SET
    slug = REPLACE(trim(lower(name)), '', '-');

UPDATE miasta SET
     slug = REPLACE(slug, 'ą', 'a'),
    slug = REPLACE(slug, 'Ą', 'A'),
    slug = REPLACE(slug, 'ć', 'c'),
    slug = REPLACE(slug, 'Ć', 'C'),
    slug = REPLACE(slug, 'ę', 'e'),
    slug = REPLACE(slug, 'Ę', 'E'),
    slug = REPLACE(slug, 'ł', 'l'),
    slug = REPLACE(slug, 'Ł', 'L'),
    slug = REPLACE(slug, 'ń', 'n'),
    slug = REPLACE(slug, 'Ń', 'N'),
    slug = REPLACE(slug, 'ó', 'o'),
    slug = REPLACE(slug, 'Ó', 'O'),
    slug = REPLACE(slug, 'ś', 's'),
    slug = REPLACE(slug, 'Ś', 'S'),
    slug = REPLACE(slug, 'ż', 'z'),
    slug = REPLACE(slug, 'Ż', 'Z'),
    slug = REPLACE(slug, 'ź', 'z'),
    slug = REPLACE(slug, 'Ź', 'Z')
     slug = REPLACE(slug, '.', ''),
    slug = REPLACE(slug, ',', ''),
    slug = REPLACE(slug, ';', ''),
    slug = REPLACE(slug, ':', ''),
    slug = REPLACE(slug, '?', ''),
    slug = REPLACE(slug, '%', ''),
    slug = REPLACE(slug, '&', ''),
    slug = REPLACE(slug, '#', ''),
    slug = REPLACE(slug, '*', ''),
    slug = REPLACE(slug, '!', ''),
    slug = REPLACE(slug, '_', ''),
    slug = REPLACE(slug, '@', ''),
    slug = REPLACE(slug, '+', ''),
    slug = REPLACE(slug, '(', ''),
    slug = REPLACE(slug, ')', ''),
    slug = REPLACE(slug, '[', ''),
    slug = REPLACE(slug, ']', ''),
    slug = REPLACE(slug, '/', ''),
    slug = REPLACE(slug, '-', ''),
    slug = REPLACE(slug, '\'', '');

 

Po takiej operacji mamy wygenerowane wpisy.

Zaletą jest to że wykonujemy to z samej bazy danych bez używania innego języka co zapewnia większ wydajność.

 

 

Poprzedni wpis Nastepny wpis