Как безопасно превратить имя в «очищенный псевдоним» в представлении MySQL? - PullRequest
0 голосов
/ 31 марта 2020

У меня есть таблица с реальными именами, например, «Мэтт Смит», но мне нужно преобразовать их для использования в качестве URL-путей в веб-приложении. «Мэтт Смит» станет «Мэтт-Смит», «Дэнни О'Брайен» станет «Дэнни-Обриен» и т. Д. c.

Мне нужно в нижнем регистре, вырезать специальные символы и заменить пробелы на тире.

Я знаю, что могу сделать это, чтобы заменить пробелы:

SELECT REPLACE( table.field, ' ', '-' ) FROM table;

И я знаю, что есть также функция LOWER ().

Чего я не знаю:

  1. Как вырезать специальные символы
  2. Как объединить все три в один SQL запрос, который на самом деле работает
  3. Если можно сделать так, чтобы он работал автоматически при создании представления, и чтобы он продолжал работать при добавлении новых строк через веб-приложение

1 Ответ

2 голосов
/ 31 марта 2020

Если вы используете MySQL 8+, то REGEXP_REPLACE - это один из вариантов:

SELECT
    LOWER(REPLACE(REGEXP_REPLACE(field, '[^A-Za-z0-9]', ''), ' ', '-')) AS alias
FROM yourTable;

Самый внутренний вызов REGEXP_REPLACE удаляет все не алфавитные символы c символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...